18дел Документация

Интеграции

Справочник REST API v1

Все методы, права, форматы запросов и примеры curl из действующей OpenAPI-схемы.

Справочник собирается из действующей схемы приложения. Адрес: https://tracker.18d.ru/api/v1. Все методы требуют Authorization: Bearer TOKEN, кроме скачивания OpenAPI.

Скачать OpenAPI JSON · Как подключиться к API

GET /api/v1/me

Текущий пользователь и его пространство.

Права: Действующий токен.

curl -X GET 'https://tracker.18d.ru/api/v1/me' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/queues

Доступные очереди и эффективные права на них.

Права: Любой участник; только доступные очереди.

curl -X GET 'https://tracker.18d.ru/api/v1/queues' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/queues

Создать очередь со стандартными статусами.

Права: Администратор пространства.

Тело: Queue.

curl -X POST 'https://tracker.18d.ru/api/v1/queues' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"key": "DEV", "name": "Разработка", "description": "Задачи продукта"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/statuses

Статусы доступных очередей.

Права: Право чтения соответствующей очереди.

curl -X GET 'https://tracker.18d.ru/api/v1/statuses' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/users

Участники текущего пространства.

Права: Участник пространства.

curl -X GET 'https://tracker.18d.ru/api/v1/users' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/issues/search

Поиск задач по тексту и фильтрам, до 2000 результатов.

Права: Чтение выбранных очередей.

Тело: Filters.

curl -X POST 'https://tracker.18d.ru/api/v1/issues/search' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queue_ids": [42], "category": "progress", "mine": true}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/issues/{key}

Задача с комментариями, временем, историей, доступными связями и подзадачами.

Права: Чтение очереди задачи.

curl -X GET 'https://tracker.18d.ru/api/v1/issues/{key}' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

PATCH /api/v1/issues/{key}

Изменить поля задачи или переместить в статус её очереди.

Права: Read-write или admin очереди.

Тело: IssueUpdate.

curl -X PATCH 'https://tracker.18d.ru/api/v1/issues/{key}' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"version": 3, "status_id": 17, "position": 2048}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/issues

Создать задачу в указанной очереди.

Права: Read-write или admin очереди.

Тело: IssueCreate.

curl -X POST 'https://tracker.18d.ru/api/v1/issues' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queue_id": 42, "title": "Подготовить релиз", "priority": "high", "labels": ["release"]}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/issues/{key}/comments

Добавить комментарий от имени владельца токена.

Права: Read-write или admin очереди.

Тело: Comment.

curl -X POST 'https://tracker.18d.ru/api/v1/issues/{key}/comments' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"body": "Проверка завершена"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/issues/{key}/worklogs

Записать от 1 до 1440 целых минут работы.

Права: Read-write или admin очереди.

Тело: Worklog.

curl -X POST 'https://tracker.18d.ru/api/v1/issues/{key}/worklogs' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"minutes": 45, "description": "Проверка релиза"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/statistics

Статистика доступных задач: прогресс, время, очереди, исполнители; truncated сообщает об усечении.

Права: Чтение соответствующих очередей.

Тело: Filters.

curl -X POST 'https://tracker.18d.ru/api/v1/statistics' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queue_ids": [42]}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/dashboards

Доступные общие дашборды с конфигурацией виджетов.

Права: Участник; дашборды со скрытыми очередями не выдаются.

curl -X GET 'https://tracker.18d.ru/api/v1/dashboards' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

POST /api/v1/dashboards

Создать дашборд, максимум 30 виджетов.

Права: Участник, только доступные очереди в фильтрах.

Тело: Dashboard.

curl -X POST 'https://tracker.18d.ru/api/v1/dashboards' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name": "Релиз", "widgets": [{"type": "stats", "title": "Обзор", "filters": {"queue_ids": [42]}}]}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

PUT /api/v1/dashboards/{dashboard_id}

Заменить название и конфигурацию собственного дашборда.

Права: Владелец дашборда; доступ к очередям фильтра.

Тело: Dashboard.

curl -X PUT 'https://tracker.18d.ru/api/v1/dashboards/{dashboard_id}' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name": "Релиз обновлён", "widgets": []}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

GET /api/v1/queues/{queue_id}/permissions

Участники, явные/наследуемые роли и история прав очереди.

Права: Admin очереди или пространства.

curl -X GET 'https://tracker.18d.ru/api/v1/queues/{queue_id}/permissions' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

PUT /api/v1/queues/{queue_id}/permissions/{user_id}

Выдать или изменить роль на очереди. Роль применяется сразу.

Права: Admin очереди или пространства; пользователь того же пространства.

Тело: QueuePermission.

curl -X PUT 'https://tracker.18d.ru/api/v1/queues/{queue_id}/permissions/{user_id}' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"role": "read-only"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

DELETE /api/v1/queues/{queue_id}/permissions/{user_id}

Отозвать явный доступ. Администраторы пространства сохраняют наследуемый admin.

Права: Admin очереди или пространства.

curl -X DELETE 'https://tracker.18d.ru/api/v1/queues/{queue_id}/permissions/{user_id}' \
  -H "Authorization: Bearer $TRACKER_TOKEN"

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

PATCH /api/v1/queues/{queue_id}

Изменить название и описание очереди.

Права: Admin очереди или пространства.

Тело: QueueSettings.

curl -X PATCH 'https://tracker.18d.ru/api/v1/queues/{queue_id}' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name": "Разработка продукта", "description": "Рабочий процесс"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

PATCH /api/v1/users/{user_id}

Изменить имя, роль или активность пользователя. Последний активный admin защищён.

Права: Только администратор пространства.

Тело: UserChanges.

curl -X PATCH 'https://tracker.18d.ru/api/v1/users/{user_id}' \
  -H "Authorization: Bearer $TRACKER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"role": "member"}'

Замените параметры в фигурных скобках реальными значениями. Ответ: JSON.

Форматы запросов

Неизвестные поля отклоняются. В PATCH отправляйте только изменяемые поля; отсутствие поля и null различаются. Для удаления исполнителя, родителя или срока можно передать null. Обязательная версия не навязывается, но для защиты от потери изменений передавайте version.

Comment

ПолеТипОбязательноОграничения и значение по умолчанию
bodystringДа{"maxLength": 50000, "minLength": 1}

Dashboard

ПолеТипОбязательноОграничения и значение по умолчанию
namestringДа{"maxLength": 500, "minLength": 1}
widgetsarrayДа{"maxItems": 30, "items": {"$ref": "#/components/schemas/Widget"}}

Filters

ПолеТипОбязательноОграничения и значение по умолчанию
searchstring / nullНет{}
queue_idsarrayНет{"items": {"type": "integer", "exclusiveMinimum": 0.0}}
status_idsarrayНет{"items": {"type": "integer", "exclusiveMinimum": 0.0}}
assignee_idsarrayНет{"items": {"type": "integer", "exclusiveMinimum": 0.0}}
minebooleanНет{"default": false}
prioritystring / nullНет{}
categorystring / nullНет{}
overduebooleanНет{"default": false}
labelstring / nullНет{}

IssueCreate

ПолеТипОбязательноОграничения и значение по умолчанию
assignee_idinteger / nullНет{}
parent_idinteger / nullНет{}
prioritystringНет{"enum": ["low", "normal", "high", "critical"], "default": "normal"}
typestringНет{"default": "task"}
labelsarrayНет{"items": {"type": "string"}}
due_datestring / nullНет{}
estimate_minutesintegerНет{"minimum": 0.0, "default": 0}
queue_idintegerДа{}
titlestringДа{"maxLength": 500, "minLength": 1}
descriptionstringНет{"default": ""}

IssueUpdate

ПолеТипОбязательноОграничения и значение по умолчанию
versionintegerНет{}
titlestringНет{"maxLength": 500, "minLength": 1}
descriptionstringНет{}
status_idintegerНет{}
positionnumberНет{}
assignee_idinteger / nullНет{}
parent_idinteger / nullНет{}
prioritystringНет{"enum": ["low", "normal", "high", "critical"]}
typestringНет{}
labelsarrayНет{"items": {"type": "string"}}
due_datestring / nullНет{}
estimate_minutesintegerНет{"minimum": 0.0}

Queue

ПолеТипОбязательноОграничения и значение по умолчанию
keystringДа{"maxLength": 12, "minLength": 2}
namestringДа{"maxLength": 100, "minLength": 1}
descriptionstringНет{"default": ""}

QueuePermission

ПолеТипОбязательноОграничения и значение по умолчанию
rolestringДа{"enum": ["read-only", "read-write", "admin"]}

QueueSettings

ПолеТипОбязательноОграничения и значение по умолчанию
namestringНет{"maxLength": 100, "minLength": 1}
descriptionstringНет{}

UserChanges

ПолеТипОбязательноОграничения и значение по умолчанию
namestringНет{"maxLength": 100, "minLength": 1}
rolestringНет{"enum": ["admin", "member"]}
activebooleanНет{}

Widget

ПолеТипОбязательноОграничения и значение по умолчанию
typestringДа{"enum": ["stats", "issues", "statuses", "queues", "time", "assignees"]}
titlestringНет{"default": ""}
filtersFiltersНет{}

Worklog

ПолеТипОбязательноОграничения и значение по умолчанию
minutesintegerДа{"maximum": 1440.0, "minimum": 1.0}
descriptionstringНет{"default": ""}