pmlyДокументация
Открыть pmly

Справочник методов

Все 29 операций публичного REST API v1. Справочник и скачиваемая спецификация используют один контракт.

Базовый URL: https://app.pmly.ru/api/public/v1. Все запросы требуют Authorization: Bearer <token>.

Скачать OpenAPI 3.1 · Общие правила и ошибки

Примеры иллюстрируют формат. Подставьте реальные ID в переменные окружения, текущую VERSION и новый IDEMPOTENCY_KEY для каждого создания. UUID, даты и текст в JSON — демонстрационные значения.

GET/contextСсылка

Получить контекст

Возвращает пользователя, пространство, выданные scopes и срок действия токена. Доступно с любым действующим токеном; используйте workspace.id для последующих запросов.

Разрешения: любой действующий токен. operationId: getContext

Пример запроса
curl --request GET "$PMLY_API/context" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ContextУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
user
Обязательно
objectПользователь, от имени которого действует токен.
workspace
Обязательно
WorkspaceПространство токена и текущая роль пользователя.
scopes
Обязательно
array<string>Разрешения токена. Элементы: string
expiresAt
Обязательно
stringДата и время истечения токена. date-time

Дополнительные поля запрещены.

Вложенные поля user
ПолеТипОписание
id
Обязательно
string uuid
displayName
Обязательно
string | null

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "user": {
    "id": "00000000-0000-4000-8000-000000000001",
    "displayName": "Пример"
  },
  "workspace": {
    "id": "00000000-0000-4000-8000-000000000001",
    "name": "Пример названия",
    "role": "OWNER"
  },
  "scopes": [
    "Пример"
  ],
  "expiresAt": "2026-09-30T10:00:00Z"
}
GET/workspaces/{workspaceId}Ссылка

Получить пространство

Возвращает имя пространства и роль текущего пользователя. Доступ ограничен пространством, к которому привязан токен.

Разрешения: workspace:read. operationId: getWorkspace

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200WorkspaceУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
name
Обязательно
stringНазвание ресурса.
role
Обязательно
stringРоль участника: OWNER или MEMBER. Значения: "OWNER", "MEMBER"

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "role": "OWNER"
}
GET/workspaces/{workspaceId}/teamsСсылка

Список команд

Возвращает команды пространства с постоянными UUID и ключами. teamId нужен при создании задач, проектов и циклов.

Разрешения: workspace:read. operationId: listTeams

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/teams" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200TeamPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Team>Ресурсы текущей страницы. Элементы: Team
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "workspaceId": "00000000-0000-4000-8000-000000000001",
      "name": "Пример названия",
      "key": "Пример"
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
GET/workspaces/{workspaceId}/statusesСсылка

Список статусов

Возвращает статусы команд, их категории, порядок и признак начального статуса. Статус задачи должен принадлежать её команде.

Разрешения: workspace:read. operationId: listStatuses

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/statuses" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200StatusPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Status>Ресурсы текущей страницы. Элементы: Status
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "teamId": "00000000-0000-4000-8000-000000000001",
      "label": "Пример",
      "category": "backlog",
      "order": 0,
      "defaultStatus": false
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
GET/workspaces/{workspaceId}/membersСсылка

Список участников

Возвращает активных участников пространства и их роли без адресов email. Для назначения задачи используйте userId участника.

Разрешения: workspace:read. operationId: listMembers

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/members" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200MemberPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Member>Ресурсы текущей страницы. Элементы: Member
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "userId": "00000000-0000-4000-8000-000000000001",
      "displayName": "Пример",
      "role": "OWNER"
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
GET/workspaces/{workspaceId}/issuesСсылка

Список задач

Возвращает страницу задач. Поиск: точный отображаемый ID либо вхождение в название без учёта регистра. Переданный пустой q возвращает пустую выдачу. Разные фильтры объединяются AND, повторные значения одного поля — OR.

Разрешения: issues:read. operationId: listIssues

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
q
Необязательно
query · stringТочный отображаемый ID или вхождение в название без учёта регистра. Явный пустой q возвращает пустую выдачу.
projectId
Необязательно
query · array<string>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: string
statusId
Необязательно
query · array<string>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: string
assigneeId
Необязательно
query · array<string>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: string
priority
Необязательно
query · array<integer>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: integer. Минимум: 0. Максимум: 4
cycleId
Необязательно
query · array<string>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: string
category
Необязательно
query · array<string>Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none. Элементы: string
groupBy
Необязательно
query · stringПоле группировки. Значения: "none", "status", "priority", "assignee", "project", "cycle"
sortBy
Необязательно
query · stringПоле сортировки. Значения: "createdAt", "updatedAt", "priority"
sortDirection
Необязательно
query · stringНаправление сортировки. Значения: "asc", "desc"
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/issues" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200IssuePageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Issue>Ресурсы текущей страницы. Элементы: Issue
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "workspaceId": "00000000-0000-4000-8000-000000000001",
      "teamId": "00000000-0000-4000-8000-000000000001",
      "projectId": "00000000-0000-4000-8000-000000000001",
      "statusId": "00000000-0000-4000-8000-000000000001",
      "assigneeId": "00000000-0000-4000-8000-000000000001",
      "number": 1,
      "identifier": "API-1",
      "title": "Задача через API",
      "description": "Пример",
      "priority": 0,
      "version": 1,
      "createdAt": "2026-09-30T10:00:00Z",
      "updatedAt": "2026-09-30T10:00:00Z",
      "cycleId": "00000000-0000-4000-8000-000000000001"
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
POST/workspaces/{workspaceId}/issuesСсылка

Создать задачу

Создаёт задачу с обязательными teamId и title. При отсутствии statusId используется начальный статус команды; приоритет по умолчанию 0. Ссылки на проект, статус, участника и цикл проверяются в границах пространства и команды. Нужен Idempotency-Key.

Разрешения: issues:write. operationId: createIssue

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
Idempotency-Key
Обязательно
header · stringУникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов. Минимальная длина: 1. Максимальная длина: 128

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Необязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Необязательно
stringUUID статуса команды задачи. uuid
assigneeId
Необязательно
string | nullUUID активного участника. null снимает назначение. uuid
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Необязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
cycleId
Необязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/issues" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "teamId": "00000000-0000-4000-8000-000000000001",
  "title": "Задача через API"
}'

Ответы

HTTPСхемаОписание
201IssueРесурс создан; повтор возвращает первоначальный ответ
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 201
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Обязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Обязательно
stringUUID статуса команды задачи. uuid
assigneeId
Обязательно
string | nullUUID активного участника. null снимает назначение. uuid
number
Обязательно
integerНомер задачи, назначенный сервером; уникален в команде. Минимум: 1
identifier
Обязательно
stringОтображаемый ID задачи, например API-1.
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Обязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
cycleId
Обязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "projectId": "00000000-0000-4000-8000-000000000001",
  "statusId": "00000000-0000-4000-8000-000000000001",
  "assigneeId": "00000000-0000-4000-8000-000000000001",
  "number": 1,
  "identifier": "API-1",
  "title": "Задача через API",
  "description": "Пример",
  "priority": 0,
  "version": 1,
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "cycleId": "00000000-0000-4000-8000-000000000001"
}
GET/workspaces/{workspaceId}/issues/{issueId}Ссылка

Получить задачу

Возвращает сохранённые поля задачи и текущую version. Используйте UUID id в маршрутах; identifier предназначен для отображения и поиска.

Разрешения: issues:read. operationId: getIssue

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200IssueУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Обязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Обязательно
stringUUID статуса команды задачи. uuid
assigneeId
Обязательно
string | nullUUID активного участника. null снимает назначение. uuid
number
Обязательно
integerНомер задачи, назначенный сервером; уникален в команде. Минимум: 1
identifier
Обязательно
stringОтображаемый ID задачи, например API-1.
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Обязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
cycleId
Обязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "projectId": "00000000-0000-4000-8000-000000000001",
  "statusId": "00000000-0000-4000-8000-000000000001",
  "assigneeId": "00000000-0000-4000-8000-000000000001",
  "number": 1,
  "identifier": "API-1",
  "title": "Задача через API",
  "description": "Пример",
  "priority": 0,
  "version": 1,
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "cycleId": "00000000-0000-4000-8000-000000000001"
}
PATCH/workspaces/{workspaceId}/issues/{issueId}Ссылка

Изменить задачу

Меняет только переданные поля задачи. Требует актуальную version. null снимает projectId, assigneeId или cycleId; пустое описание очищает текст. teamId изменить нельзя. Устаревшая версия даёт 409 даже при отсутствии изменений.

Разрешения: issues:write. operationId: updateIssue

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
projectId
Необязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Необязательно
stringUUID статуса команды задачи. uuid
assigneeId
Необязательно
string | nullUUID активного участника. null снимает назначение. uuid
title
Необязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Необязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
cycleId
Необязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Пример запроса
curl --request PATCH "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1,
  "priority": 2
}'

Ответы

HTTPСхемаОписание
200IssueУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Обязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Обязательно
stringUUID статуса команды задачи. uuid
assigneeId
Обязательно
string | nullUUID активного участника. null снимает назначение. uuid
number
Обязательно
integerНомер задачи, назначенный сервером; уникален в команде. Минимум: 1
identifier
Обязательно
stringОтображаемый ID задачи, например API-1.
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Обязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
cycleId
Обязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "projectId": "00000000-0000-4000-8000-000000000001",
  "statusId": "00000000-0000-4000-8000-000000000001",
  "assigneeId": "00000000-0000-4000-8000-000000000001",
  "number": 1,
  "identifier": "API-1",
  "title": "Задача через API",
  "description": "Пример",
  "priority": 0,
  "version": 1,
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "cycleId": "00000000-0000-4000-8000-000000000001"
}
GET/workspaces/{workspaceId}/projectsСсылка

Список проектов

Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена.

Разрешения: projects:read. operationId: listProjects

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/projects" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ProjectPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Project>Ресурсы текущей страницы. Элементы: Project
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "teamId": "00000000-0000-4000-8000-000000000001",
      "name": "Пример названия",
      "description": "Пример",
      "version": 1
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
POST/workspaces/{workspaceId}/projectsСсылка

Создать проект

Создаёт проект в указанной команде с обязательным именем. Нужен Idempotency-Key.

Разрешения: projects:write. operationId: createProject

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
Idempotency-Key
Обязательно
header · stringУникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов. Минимальная длина: 1. Максимальная длина: 128

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/projects" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Новый проект"
}'

Ответы

HTTPСхемаОписание
201ProjectРесурс создан; повтор возвращает первоначальный ответ
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 201
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "description": "Пример",
  "version": 1
}
GET/workspaces/{workspaceId}/projects/{projectId}Ссылка

Получить проект

Возвращает проект и текущую version для последующего изменения.

Разрешения: projects:read. operationId: getProject

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
projectId
Обязательно
path · stringUUID проекта. null означает отсутствие проекта. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/projects/$PROJECT_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ProjectУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "description": "Пример",
  "version": 1
}
PATCH/workspaces/{workspaceId}/projects/{projectId}Ссылка

Изменить проект

Меняет только переданные имя и описание проекта. Требует текущую version; teamId изменить нельзя.

Разрешения: projects:write. operationId: updateProject

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
projectId
Обязательно
path · stringUUID проекта. null означает отсутствие проекта. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000

Дополнительные поля запрещены.

Пример запроса
curl --request PATCH "$PMLY_API/workspaces/$WORKSPACE_ID/projects/$PROJECT_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1,
  "name": "Обновлённый проект"
}'

Ответы

HTTPСхемаОписание
200ProjectУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "description": "Пример",
  "version": 1
}
GET/workspaces/{workspaceId}/cyclesСсылка

Список циклов

Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена.

Разрешения: cycles:read. operationId: listCycles

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/cycles" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200CyclePageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Cycle>Ресурсы текущей страницы. Элементы: Cycle
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "workspaceId": "00000000-0000-4000-8000-000000000001",
      "teamId": "00000000-0000-4000-8000-000000000001",
      "name": "Пример названия",
      "startDate": "2026-10-01",
      "endDate": "2026-10-14",
      "state": "open",
      "version": 1
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
POST/workspaces/{workspaceId}/cyclesСсылка

Создать цикл

Создаёт цикл в указанной команде. Передайте имя и даты начала/окончания; начало не должно быть позже окончания. Нужен Idempotency-Key.

Разрешения: cycles:write. operationId: createCycle

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
Idempotency-Key
Обязательно
header · stringУникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов. Минимальная длина: 1. Максимальная длина: 128

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/cycles" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Октябрь",
  "startDate": "2026-10-01",
  "endDate": "2026-10-14"
}'

Ответы

HTTPСхемаОписание
201CycleРесурс создан; повтор возвращает первоначальный ответ
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 201
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date
state
Обязательно
stringСостояние цикла. Значения: "open", "completed"
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "startDate": "2026-10-01",
  "endDate": "2026-10-14",
  "state": "open",
  "version": 1
}
GET/workspaces/{workspaceId}/cycles/{cycleId}Ссылка

Получить цикл

Возвращает цикл, диапазон дат, состояние и текущую version.

Разрешения: cycles:read. operationId: getCycle

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
cycleId
Обязательно
path · stringUUID цикла команды. null снимает цикл. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/cycles/$CYCLE_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200CycleУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date
state
Обязательно
stringСостояние цикла. Значения: "open", "completed"
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "startDate": "2026-10-01",
  "endDate": "2026-10-14",
  "state": "open",
  "version": 1
}
PATCH/workspaces/{workspaceId}/cycles/{cycleId}Ссылка

Изменить цикл

Меняет только переданные имя и даты цикла с проверкой актуальной version.

Разрешения: cycles:write. operationId: updateCycle

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
cycleId
Обязательно
path · stringUUID цикла команды. null снимает цикл. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Необязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Необязательно
stringДата окончания цикла, YYYY-MM-DD. date

Дополнительные поля запрещены.

Пример запроса
curl --request PATCH "$PMLY_API/workspaces/$WORKSPACE_ID/cycles/$CYCLE_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1,
  "name": "Обновлённый цикл"
}'

Ответы

HTTPСхемаОписание
200CycleУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date
state
Обязательно
stringСостояние цикла. Значения: "open", "completed"
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "startDate": "2026-10-01",
  "endDate": "2026-10-14",
  "state": "open",
  "version": 1
}
POST/workspaces/{workspaceId}/cycles/{cycleId}/completeСсылка

Завершить цикл

Завершает цикл с проверкой актуальной version. Это команда изменения существующего ресурса, поэтому Idempotency-Key не требуется.

Разрешения: cycles:write. operationId: completeCycle

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
cycleId
Обязательно
path · stringUUID цикла команды. null снимает цикл. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/cycles/$CYCLE_ID/complete" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1
}'

Ответы

HTTPСхемаОписание
200CycleУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date
state
Обязательно
stringСостояние цикла. Значения: "open", "completed"
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "teamId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "startDate": "2026-10-01",
  "endDate": "2026-10-14",
  "state": "open",
  "version": 1
}
GET/workspaces/{workspaceId}/viewsСсылка

Список представлений

Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена.

Разрешения: views:read. operationId: listViews

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/views" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ViewPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<View>Ресурсы текущей страницы. Элементы: View
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "workspaceId": "00000000-0000-4000-8000-000000000001",
      "authorId": "00000000-0000-4000-8000-000000000001",
      "name": "Пример названия",
      "settings": {
        "q": "Пример",
        "projectId": [
          "Пример"
        ],
        "statusId": [
          "Пример"
        ],
        "assigneeId": [
          "Пример"
        ],
        "cycleId": [
          "Пример"
        ],
        "category": [
          "Пример"
        ],
        "priority": [
          0
        ],
        "groupBy": "none",
        "sortBy": "createdAt",
        "sortDirection": "asc"
      },
      "version": 1
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
POST/workspaces/{workspaceId}/viewsСсылка

Создать представление

Создаёт представление с именем и настройками. Нужен Idempotency-Key.

Разрешения: views:write. operationId: createView

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
Idempotency-Key
Обязательно
header · stringУникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов. Минимальная длина: 1. Максимальная длина: 128

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/views" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "name": "Высокий приоритет",
  "settings": {
    "priority": [
      1,
      2
    ],
    "groupBy": "status",
    "sortBy": "updatedAt",
    "sortDirection": "desc"
  }
}'

Ответы

HTTPСхемаОписание
201ViewРесурс создан; повтор возвращает первоначальный ответ
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 201
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
authorId
Обязательно
stringUUID автора. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "settings": {
    "q": "Пример",
    "projectId": [
      "Пример"
    ],
    "statusId": [
      "Пример"
    ],
    "assigneeId": [
      "Пример"
    ],
    "cycleId": [
      "Пример"
    ],
    "category": [
      "Пример"
    ],
    "priority": [
      0
    ],
    "groupBy": "none",
    "sortBy": "createdAt",
    "sortDirection": "asc"
  },
  "version": 1
}
GET/workspaces/{workspaceId}/views/{viewId}Ссылка

Получить представление

Возвращает сохранённое представление с фильтрами, группировкой, сортировкой и текущей version.

Разрешения: views:read. operationId: getView

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
viewId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/views/$VIEW_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ViewУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
authorId
Обязательно
stringUUID автора. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "settings": {
    "q": "Пример",
    "projectId": [
      "Пример"
    ],
    "statusId": [
      "Пример"
    ],
    "assigneeId": [
      "Пример"
    ],
    "cycleId": [
      "Пример"
    ],
    "category": [
      "Пример"
    ],
    "priority": [
      0
    ],
    "groupBy": "none",
    "sortBy": "createdAt",
    "sortDirection": "asc"
  },
  "version": 1
}
PATCH/workspaces/{workspaceId}/views/{viewId}Ссылка

Изменить представление

Меняет имя и/или настройки с проверкой version. Переданный объект settings заменяется целиком. Сохраняются права автора и владельца пространства.

Разрешения: views:write. operationId: updateView

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
viewId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Необязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.

Дополнительные поля запрещены.

Пример запроса
curl --request PATCH "$PMLY_API/workspaces/$WORKSPACE_ID/views/$VIEW_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1,
  "name": "Обновлённое представление"
}'

Ответы

HTTPСхемаОписание
200ViewУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
authorId
Обязательно
stringUUID автора. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "name": "Пример названия",
  "settings": {
    "q": "Пример",
    "projectId": [
      "Пример"
    ],
    "statusId": [
      "Пример"
    ],
    "assigneeId": [
      "Пример"
    ],
    "cycleId": [
      "Пример"
    ],
    "category": [
      "Пример"
    ],
    "priority": [
      0
    ],
    "groupBy": "none",
    "sortBy": "createdAt",
    "sortDirection": "asc"
  },
  "version": 1
}
DELETE/workspaces/{workspaceId}/views/{viewId}Ссылка

Удалить представление

Удаляет представление с проверкой version из query-параметра. Сохраняются права автора и владельца пространства. Успех — 204 без тела.

Разрешения: views:write. operationId: deleteView

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
viewId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
version
Обязательно
query · integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
Пример запроса
curl --request DELETE "$PMLY_API/workspaces/$WORKSPACE_ID/views/$VIEW_ID?version=$VERSION" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
204Без телаУспешное удаление, без тела
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
GET/workspaces/{workspaceId}/issues/{issueId}/commentsСсылка

Список комментариев

Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена.

Разрешения: comments:read. operationId: listComments

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/comments" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200CommentPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Comment>Ресурсы текущей страницы. Элементы: Comment
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "workspaceId": "00000000-0000-4000-8000-000000000001",
      "issueId": "00000000-0000-4000-8000-000000000001",
      "authorId": "00000000-0000-4000-8000-000000000001",
      "authorName": "Пример",
      "body": "Комментарий через API",
      "createdAt": "2026-09-30T10:00:00Z",
      "updatedAt": "2026-09-30T10:00:00Z",
      "deletedAt": null,
      "version": 1,
      "mentions": [],
      "sourceClient": null
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}
POST/workspaces/{workspaceId}/issues/{issueId}/commentsСсылка

Создать комментарий

Создаёт комментарий к задаче. Текст обрезается по краям; упоминания проверяются относительно переданного текста. Нужен Idempotency-Key. Автор назначается сервером.

Разрешения: comments:write. operationId: createComment

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
Idempotency-Key
Обязательно
header · stringУникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов. Минимальная длина: 1. Максимальная длина: 128

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Минимальная длина: 1. Максимальная длина: 20000
mentions
Необязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention

Дополнительные поля запрещены.

Пример запроса
curl --request POST "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/comments" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "body": "Комментарий через API"
}'

Ответы

HTTPСхемаОписание
201CommentРесурс создан; повтор возвращает первоначальный ответ
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 201
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
string uuid
authorId
Обязательно
stringUUID автора. uuid
authorName
Обязательно
stringИмя автора.
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Максимальная длина: 20000
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
deletedAt
Обязательно
string | nullДата удаления; null для действующего комментария. date-time
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
mentions
Обязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention
sourceClient
Необязательно
string | nullНазвание MCP-клиента, назначенное сервером. null для обычного пользовательского или REST-комментария. Максимальная длина: 100

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "issueId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "authorName": "Пример",
  "body": "Комментарий через API",
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "deletedAt": null,
  "version": 1,
  "mentions": [],
  "sourceClient": null
}
GET/workspaces/{workspaceId}/issues/{issueId}/comments/{commentId}Ссылка

Получить комментарий

Возвращает комментарий, автора, упоминания, версию и отметку удаления. У удалённого комментария body пустой; deletedAt заполнено.

Разрешения: comments:read. operationId: getComment

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
commentId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/comments/$COMMENT_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200CommentУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
string uuid
authorId
Обязательно
stringUUID автора. uuid
authorName
Обязательно
stringИмя автора.
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Максимальная длина: 20000
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
deletedAt
Обязательно
string | nullДата удаления; null для действующего комментария. date-time
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
mentions
Обязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention
sourceClient
Необязательно
string | nullНазвание MCP-клиента, назначенное сервером. null для обычного пользовательского или REST-комментария. Максимальная длина: 100

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "issueId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "authorName": "Пример",
  "body": "Комментарий через API",
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "deletedAt": null,
  "version": 1,
  "mentions": [],
  "sourceClient": null
}
PATCH/workspaces/{workspaceId}/issues/{issueId}/comments/{commentId}Ссылка

Изменить комментарий

Меняет комментарий с проверкой version и прав автора/владельца пространства. При изменении body без mentions упоминания очищаются; при передаче только version сохраняются.

Разрешения: comments:write. operationId: updateComment

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
commentId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid

Тело запроса

Content-Type: application/json · обязательно

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
body
Необязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Минимальная длина: 1. Максимальная длина: 20000
mentions
Необязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention

Дополнительные поля запрещены.

Пример запроса
curl --request PATCH "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/comments/$COMMENT_ID" \
  --header "Authorization: Bearer $PMLY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "version": 1,
  "body": "Обновлённый комментарий"
}'

Ответы

HTTPСхемаОписание
200CommentУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
string uuid
authorId
Обязательно
stringUUID автора. uuid
authorName
Обязательно
stringИмя автора.
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Максимальная длина: 20000
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
deletedAt
Обязательно
string | nullДата удаления; null для действующего комментария. date-time
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
mentions
Обязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention
sourceClient
Необязательно
string | nullНазвание MCP-клиента, назначенное сервером. null для обычного пользовательского или REST-комментария. Максимальная длина: 100

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "id": "00000000-0000-4000-8000-000000000001",
  "workspaceId": "00000000-0000-4000-8000-000000000001",
  "issueId": "00000000-0000-4000-8000-000000000001",
  "authorId": "00000000-0000-4000-8000-000000000001",
  "authorName": "Пример",
  "body": "Комментарий через API",
  "createdAt": "2026-09-30T10:00:00Z",
  "updatedAt": "2026-09-30T10:00:00Z",
  "deletedAt": null,
  "version": 1,
  "mentions": [],
  "sourceClient": null
}
DELETE/workspaces/{workspaceId}/issues/{issueId}/comments/{commentId}Ссылка

Удалить комментарий

Удаляет текст комментария с проверкой version из query-параметра и прав автора/владельца пространства. Метаданные остаются; успех — 204 без тела.

Разрешения: comments:write. operationId: deleteComment

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
commentId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
version
Обязательно
query · integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
Пример запроса
curl --request DELETE "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/comments/$COMMENT_ID?version=$VERSION" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
204Без телаУспешное удаление, без тела
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
GET/workspaces/{workspaceId}/issues/{issueId}/activityСсылка

История задачи

Возвращает страницу истории задачи с автором, видом изменения и изменёнными значениями. Запись изменения и истории выполняется атомарно.

Разрешения: issues:read. operationId: listIssueActivity

Параметры

ПараметрГде / типОписание
workspaceId
Обязательно
path · stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
path · stringUUID ресурса в указанном пространстве. uuid
limit
Необязательно
query · integerРазмер страницы. По умолчанию: 50. Минимум: 1. Максимум: 100
offset
Необязательно
query · integerКоличество пропущенных ресурсов. По умолчанию: 0. Минимум: 0. Максимум: 100000
Пример запроса
curl --request GET "$PMLY_API/workspaces/$WORKSPACE_ID/issues/$ISSUE_ID/activity" \
  --header "Authorization: Bearer $PMLY_API_TOKEN"

Ответы

HTTPСхемаОписание
200ActivityPageУспешный запрос
Заголовки: X-Request-Id
400ErrorНеверные параметры или тело запроса
401ErrorТокен отсутствует, истёк или отозван
Заголовки: WWW-Authenticate
403ErrorНедостаточно разрешений или бизнес-прав
404ErrorРесурс не найден или недоступен в этом пространстве
409ErrorКонфликт версии или ключа идемпотентности
413ErrorТело запроса слишком велико
429ErrorЛимит запросов; подождите Retry-After секунд
Заголовки: Retry-After
500ErrorInternal error
Схема и пример ответа 200
ПолеТипОписание
items
Обязательно
array<Activity>Ресурсы текущей страницы. Элементы: Activity
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

Демонстрационный ответ
{
  "items": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "actorId": "00000000-0000-4000-8000-000000000001",
      "actorName": "Пример",
      "kind": "Пример",
      "changes": {},
      "createdAt": "2026-09-30T10:00:00Z"
    }
  ],
  "total": 0,
  "limit": 1,
  "offset": 0
}

Схемы данных

Ссылки в таблицах ведут к полному описанию вложенных объектов.

Error

ПолеТипОписание
code
Обязательно
stringМашиночитаемый код ошибки.
message
Обязательно
stringОписание ошибки.
requestId
Обязательно
stringUUID запроса; также возвращается в X-Request-Id. uuid

Дополнительные поля запрещены.

Workspace

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
name
Обязательно
stringНазвание ресурса.
role
Обязательно
stringРоль участника: OWNER или MEMBER. Значения: "OWNER", "MEMBER"

Дополнительные поля запрещены.

Team

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
name
Обязательно
stringНазвание ресурса.
key
Обязательно
stringКлюч команды, используемый в отображаемых номерах задач.

Дополнительные поля запрещены.

Status

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
label
Обязательно
stringНазвание статуса.
category
Обязательно
stringКатегория статуса. Значения: "backlog", "unstarted", "started", "completed", "canceled"
order
Обязательно
integerПорядок статуса в команде.
defaultStatus
Обязательно
booleanЯвляется ли статус начальным для команды.

Дополнительные поля запрещены.

Member

ПолеТипОписание
userId
Обязательно
stringUUID пользователя. uuid
displayName
Обязательно
string | nullОтображаемое имя пользователя.
role
Обязательно
stringРоль участника: OWNER или MEMBER. Значения: "OWNER", "MEMBER"

Дополнительные поля запрещены.

Context

ПолеТипОписание
user
Обязательно
objectПользователь, от имени которого действует токен.
workspace
Обязательно
WorkspaceПространство токена и текущая роль пользователя.
scopes
Обязательно
array<string>Разрешения токена. Элементы: string
expiresAt
Обязательно
stringДата и время истечения токена. date-time

Дополнительные поля запрещены.

Вложенные поля user
ПолеТипОписание
id
Обязательно
string uuid
displayName
Обязательно
string | null

Дополнительные поля запрещены.

Issue

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Обязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Обязательно
stringUUID статуса команды задачи. uuid
assigneeId
Обязательно
string | nullUUID активного участника. null снимает назначение. uuid
number
Обязательно
integerНомер задачи, назначенный сервером; уникален в команде. Минимум: 1
identifier
Обязательно
stringОтображаемый ID задачи, например API-1.
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Обязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
cycleId
Обязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

Project

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Обязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Cycle

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date
state
Обязательно
stringСостояние цикла. Значения: "open", "completed"
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

ViewSettings

ПолеТипОписание
q
Необязательно
stringВхождение в название или точный отображаемый ID задачи.
projectId
Необязательно
array<string>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: string
statusId
Необязательно
array<string>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: string
assigneeId
Необязательно
array<string>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: string
cycleId
Необязательно
array<string>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: string
category
Необязательно
array<string>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: string
priority
Необязательно
array<integer>Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND. Максимум элементов: 100. Элементы: integer. Минимум: 0. Максимум: 4
groupBy
Необязательно
stringПоле группировки. Значения: "none", "status", "priority", "assignee", "project", "cycle"
sortBy
Необязательно
stringПоле сортировки. Значения: "createdAt", "updatedAt", "priority"
sortDirection
Необязательно
stringНаправление сортировки. Значения: "asc", "desc"

Дополнительные поля запрещены.

View

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
authorId
Обязательно
stringUUID автора. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

Comment

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
workspaceId
Обязательно
stringUUID пространства, к которому привязан токен. uuid
issueId
Обязательно
string uuid
authorId
Обязательно
stringUUID автора. uuid
authorName
Обязательно
stringИмя автора.
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Максимальная длина: 20000
createdAt
Обязательно
stringДата и время создания в UTC. date-time
updatedAt
Обязательно
stringДата и время последнего изменения в UTC. date-time
deletedAt
Обязательно
string | nullДата удаления; null для действующего комментария. date-time
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
mentions
Обязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention
sourceClient
Необязательно
string | nullНазвание MCP-клиента, назначенное сервером. null для обычного пользовательского или REST-комментария. Максимальная длина: 100

Дополнительные поля запрещены.

Activity

ПолеТипОписание
id
Обязательно
stringПостоянный UUID ресурса. uuid
actorId
Обязательно
stringUUID автора изменения. uuid
actorName
Обязательно
stringИмя автора изменения.
kind
Обязательно
stringВид события истории.
changes
Обязательно
objectИзменённые поля и значения.
createdAt
Обязательно
stringДата и время создания в UTC. date-time

Дополнительные поля запрещены.

WorkspacePage

ПолеТипОписание
items
Обязательно
array<Workspace>Ресурсы текущей страницы. Элементы: Workspace
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

TeamPage

ПолеТипОписание
items
Обязательно
array<Team>Ресурсы текущей страницы. Элементы: Team
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

StatusPage

ПолеТипОписание
items
Обязательно
array<Status>Ресурсы текущей страницы. Элементы: Status
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

MemberPage

ПолеТипОписание
items
Обязательно
array<Member>Ресурсы текущей страницы. Элементы: Member
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

IssuePage

ПолеТипОписание
items
Обязательно
array<Issue>Ресурсы текущей страницы. Элементы: Issue
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

ProjectPage

ПолеТипОписание
items
Обязательно
array<Project>Ресурсы текущей страницы. Элементы: Project
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

CyclePage

ПолеТипОписание
items
Обязательно
array<Cycle>Ресурсы текущей страницы. Элементы: Cycle
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

ViewPage

ПолеТипОписание
items
Обязательно
array<View>Ресурсы текущей страницы. Элементы: View
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

CommentPage

ПолеТипОписание
items
Обязательно
array<Comment>Ресурсы текущей страницы. Элементы: Comment
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

ActivityPage

ПолеТипОписание
items
Обязательно
array<Activity>Ресурсы текущей страницы. Элементы: Activity
total
Обязательно
integerОбщее количество ресурсов, соответствующих запросу. Минимум: 0
limit
Обязательно
integerРазмер страницы. Минимум: 1. Максимум: 100
offset
Обязательно
integerКоличество пропущенных ресурсов. Минимум: 0. Максимум: 100000

Дополнительные поля запрещены.

CreateIssue

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
projectId
Необязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Необязательно
stringUUID статуса команды задачи. uuid
assigneeId
Необязательно
string | nullUUID активного участника. null снимает назначение. uuid
title
Обязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Необязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
cycleId
Необязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

UpdateIssue

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
projectId
Необязательно
string | nullUUID проекта. null означает отсутствие проекта. uuid
statusId
Необязательно
stringUUID статуса команды задачи. uuid
assigneeId
Необязательно
string | nullUUID активного участника. null снимает назначение. uuid
title
Необязательно
stringНазвание задачи. Минимальная длина: 1. Максимальная длина: 200
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000
priority
Необязательно
integerПриоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий. Минимум: 0. Максимум: 4
cycleId
Необязательно
string | nullUUID цикла команды. null снимает цикл. uuid

Дополнительные поля запрещены.

CreateProject

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000

Дополнительные поля запрещены.

UpdateProject

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
description
Необязательно
stringОписание. Пустая строка очищает текст. Максимальная длина: 20000

Дополнительные поля запрещены.

CreateCycle

ПолеТипОписание
teamId
Обязательно
stringUUID команды ресурса. uuid
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Обязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Обязательно
stringДата окончания цикла, YYYY-MM-DD. date

Дополнительные поля запрещены.

UpdateCycle

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
startDate
Необязательно
stringДата начала цикла, YYYY-MM-DD. date
endDate
Необязательно
stringДата окончания цикла, YYYY-MM-DD. date

Дополнительные поля запрещены.

CompleteCycle

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1

Дополнительные поля запрещены.

CreateView

ПолеТипОписание
name
Обязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Обязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.

Дополнительные поля запрещены.

UpdateView

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
name
Необязательно
stringНазвание ресурса. Минимальная длина: 1. Максимальная длина: 100
settings
Необязательно
ViewSettingsФильтры и отображение представления. При PATCH переданный объект заменяется целиком.

Дополнительные поля запрещены.

CreateComment

ПолеТипОписание
body
Обязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Минимальная длина: 1. Максимальная длина: 20000
mentions
Необязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention

Дополнительные поля запрещены.

UpdateComment

ПолеТипОписание
version
Обязательно
integerТекущая версия ресурса; обязательна для изменения. Минимум: 1
body
Необязательно
stringТекст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой. Минимальная длина: 1. Максимальная длина: 20000
mentions
Необязательно
array<CommentMention>Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются. Максимум элементов: 100. Элементы: CommentMention

Дополнительные поля запрещены.

CommentMention

Упоминание участника пространства. Смещения UTF-16 start включительно / end не включительно покрывают @имя в переданном body. В ответе смещения относятся к сохранённому тексту после удаления пробелов по краям.

ПолеТипОписание
userId
Обязательно
stringUUID пользователя. uuid
start
Обязательно
integerНачало @упоминания включительно, в UTF-16 единицах. Минимум: 0
end
Обязательно
integerКонец @упоминания не включительно, в UTF-16 единицах. Минимум: 2

Дополнительные поля запрещены.