{"openapi":"3.1.0","info":{"title":"pmly Public API","version":"1.0.0","description":"Публичный REST API pmly v1. Персональные токены привязаны к пользователю и пространству. PATCH меняет только переданные поля и требует актуальную version. Создание требует Idempotency-Key и повторяет первоначальный успешный ответ в течение 24 часов. Cookie-авторизация не используется. По умолчанию: 120 запросов в минуту, включая до 30 записей. MCP работает отдельно через OAuth на /mcp; REST-токен не авторизует MCP."},"servers":[{"url":"/api/public/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/context":{"get":{"operationId":"getContext","summary":"Получить контекст","x-required-scopes":[],"x-read-only":true,"x-destructive":false,"parameters":[],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Context"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает пользователя, пространство, выданные scopes и срок действия токена. Доступно с любым действующим токеном; используйте workspace.id для последующих запросов."}},"/workspaces/{workspaceId}":{"get":{"operationId":"getWorkspace","summary":"Получить пространство","x-required-scopes":["workspace:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает имя пространства и роль текущего пользователя. Доступ ограничен пространством, к которому привязан токен."}},"/workspaces/{workspaceId}/teams":{"get":{"operationId":"listTeams","summary":"Список команд","x-required-scopes":["workspace:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает команды пространства с постоянными UUID и ключами. teamId нужен при создании задач, проектов и циклов."}},"/workspaces/{workspaceId}/statuses":{"get":{"operationId":"listStatuses","summary":"Список статусов","x-required-scopes":["workspace:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает статусы команд, их категории, порядок и признак начального статуса. Статус задачи должен принадлежать её команде."}},"/workspaces/{workspaceId}/members":{"get":{"operationId":"listMembers","summary":"Список участников","x-required-scopes":["workspace:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает активных участников пространства и их роли без адресов email. Для назначения задачи используйте userId участника."}},"/workspaces/{workspaceId}/issues":{"get":{"operationId":"listIssues","summary":"Список задач","x-required-scopes":["issues:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Точный отображаемый ID или вхождение в название без учёта регистра. Явный пустой q возвращает пустую выдачу."},{"name":"projectId","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"statusId","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"assigneeId","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"priority","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"cycleId","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"category","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"description":"Повторные значения объединяются OR, разные поля — AND. Для projectId, assigneeId и cycleId допустимо none."},{"name":"groupBy","in":"query","schema":{"type":"string","enum":["none","status","priority","assignee","project","cycle"]},"description":"Поле группировки."},{"name":"sortBy","in":"query","schema":{"type":"string","enum":["createdAt","updatedAt","priority"]},"description":"Поле сортировки."},{"name":"sortDirection","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"Направление сортировки."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuePage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу задач. Поиск: точный отображаемый ID либо вхождение в название без учёта регистра. Переданный пустой q возвращает пустую выдачу. Разные фильтры объединяются AND, повторные значения одного поля — OR."},"post":{"operationId":"createIssue","summary":"Создать задачу","x-required-scopes":["issues:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Уникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов."}],"responses":{"201":{"description":"Ресурс создан; повтор возвращает первоначальный ответ","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssue"},"example":{"teamId":"00000000-0000-4000-8000-000000000001","title":"Задача через API"}}}},"description":"Создаёт задачу с обязательными teamId и title. При отсутствии statusId используется начальный статус команды; приоритет по умолчанию 0. Ссылки на проект, статус, участника и цикл проверяются в границах пространства и команды. Нужен Idempotency-Key."}},"/workspaces/{workspaceId}/issues/{issueId}":{"get":{"operationId":"getIssue","summary":"Получить задачу","x-required-scopes":["issues:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает сохранённые поля задачи и текущую version. Используйте UUID id в маршрутах; identifier предназначен для отображения и поиска."},"patch":{"operationId":"updateIssue","summary":"Изменить задачу","x-required-scopes":["issues:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIssue"},"example":{"version":1,"priority":2}}}},"description":"Меняет только переданные поля задачи. Требует актуальную version. null снимает projectId, assigneeId или cycleId; пустое описание очищает текст. teamId изменить нельзя. Устаревшая версия даёт 409 даже при отсутствии изменений."}},"/workspaces/{workspaceId}/projects":{"get":{"operationId":"listProjects","summary":"Список проектов","x-required-scopes":["projects:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена."},"post":{"operationId":"createProject","summary":"Создать проект","x-required-scopes":["projects:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Уникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов."}],"responses":{"201":{"description":"Ресурс создан; повтор возвращает первоначальный ответ","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProject"},"example":{"teamId":"00000000-0000-4000-8000-000000000001","name":"Новый проект"}}}},"description":"Создаёт проект в указанной команде с обязательным именем. Нужен Idempotency-Key."}},"/workspaces/{workspaceId}/projects/{projectId}":{"get":{"operationId":"getProject","summary":"Получить проект","x-required-scopes":["projects:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID проекта. null означает отсутствие проекта."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает проект и текущую version для последующего изменения."},"patch":{"operationId":"updateProject","summary":"Изменить проект","x-required-scopes":["projects:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID проекта. null означает отсутствие проекта."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"},"example":{"version":1,"name":"Обновлённый проект"}}}},"description":"Меняет только переданные имя и описание проекта. Требует текущую version; teamId изменить нельзя."}},"/workspaces/{workspaceId}/cycles":{"get":{"operationId":"listCycles","summary":"Список циклов","x-required-scopes":["cycles:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CyclePage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена."},"post":{"operationId":"createCycle","summary":"Создать цикл","x-required-scopes":["cycles:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Уникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов."}],"responses":{"201":{"description":"Ресурс создан; повтор возвращает первоначальный ответ","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cycle"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCycle"},"example":{"teamId":"00000000-0000-4000-8000-000000000001","name":"Октябрь","startDate":"2026-10-01","endDate":"2026-10-14"}}}},"description":"Создаёт цикл в указанной команде. Передайте имя и даты начала/окончания; начало не должно быть позже окончания. Нужен Idempotency-Key."}},"/workspaces/{workspaceId}/cycles/{cycleId}":{"get":{"operationId":"getCycle","summary":"Получить цикл","x-required-scopes":["cycles:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"cycleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID цикла команды. null снимает цикл."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cycle"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает цикл, диапазон дат, состояние и текущую version."},"patch":{"operationId":"updateCycle","summary":"Изменить цикл","x-required-scopes":["cycles:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"cycleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID цикла команды. null снимает цикл."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cycle"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCycle"},"example":{"version":1,"name":"Обновлённый цикл"}}}},"description":"Меняет только переданные имя и даты цикла с проверкой актуальной version."}},"/workspaces/{workspaceId}/cycles/{cycleId}/complete":{"post":{"operationId":"completeCycle","summary":"Завершить цикл","x-required-scopes":["cycles:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"cycleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID цикла команды. null снимает цикл."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cycle"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCycle"},"example":{"version":1}}}},"description":"Завершает цикл с проверкой актуальной version. Это команда изменения существующего ресурса, поэтому Idempotency-Key не требуется."}},"/workspaces/{workspaceId}/views":{"get":{"operationId":"listViews","summary":"Список представлений","x-required-scopes":["views:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена."},"post":{"operationId":"createView","summary":"Создать представление","x-required-scopes":["views:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Уникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов."}],"responses":{"201":{"description":"Ресурс создан; повтор возвращает первоначальный ответ","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/View"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateView"},"example":{"name":"Высокий приоритет","settings":{"priority":[1,2],"groupBy":"status","sortBy":"updatedAt","sortDirection":"desc"}}}}},"description":"Создаёт представление с именем и настройками. Нужен Idempotency-Key."}},"/workspaces/{workspaceId}/views/{viewId}":{"get":{"operationId":"getView","summary":"Получить представление","x-required-scopes":["views:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"viewId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/View"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает сохранённое представление с фильтрами, группировкой, сортировкой и текущей version."},"patch":{"operationId":"updateView","summary":"Изменить представление","x-required-scopes":["views:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"viewId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/View"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateView"},"example":{"version":1,"name":"Обновлённое представление"}}}},"description":"Меняет имя и/или настройки с проверкой version. Переданный объект settings заменяется целиком. Сохраняются права автора и владельца пространства."},"delete":{"operationId":"deleteView","summary":"Удалить представление","x-required-scopes":["views:write"],"x-read-only":false,"x-destructive":true,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"viewId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"version","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"Текущая версия ресурса; обязательна для изменения."}],"responses":{"204":{"description":"Успешное удаление, без тела","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Удаляет представление с проверкой version из query-параметра. Сохраняются права автора и владельца пространства. Успех — 204 без тела."}},"/workspaces/{workspaceId}/issues/{issueId}/comments":{"get":{"operationId":"listComments","summary":"Список комментариев","x-required-scopes":["comments:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу ресурсов пространства с items, total, limit и offset. Данные доступны в пределах прав пользователя и токена."},"post":{"operationId":"createComment","summary":"Создать комментарий","x-required-scopes":["comments:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Уникальный ключ создания длиной 1–128 символов. Повтор того же нормализованного запроса возвращает первоначальный успешный ответ в течение 24 часов."}],"responses":{"201":{"description":"Ресурс создан; повтор возвращает первоначальный ответ","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateComment"},"example":{"body":"Комментарий через API"}}}},"description":"Создаёт комментарий к задаче. Текст обрезается по краям; упоминания проверяются относительно переданного текста. Нужен Idempotency-Key. Автор назначается сервером."}},"/workspaces/{workspaceId}/issues/{issueId}/comments/{commentId}":{"get":{"operationId":"getComment","summary":"Получить комментарий","x-required-scopes":["comments:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает комментарий, автора, упоминания, версию и отметку удаления. У удалённого комментария body пустой; deletedAt заполнено."},"patch":{"operationId":"updateComment","summary":"Изменить комментарий","x-required-scopes":["comments:write"],"x-read-only":false,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateComment"},"example":{"version":1,"body":"Обновлённый комментарий"}}}},"description":"Меняет комментарий с проверкой version и прав автора/владельца пространства. При изменении body без mentions упоминания очищаются; при передаче только version сохраняются."},"delete":{"operationId":"deleteComment","summary":"Удалить комментарий","x-required-scopes":["comments:write"],"x-read-only":false,"x-destructive":true,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"version","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"Текущая версия ресурса; обязательна для изменения."}],"responses":{"204":{"description":"Успешное удаление, без тела","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Удаляет текст комментария с проверкой version из query-параметра и прав автора/владельца пространства. Метаданные остаются; успех — 204 без тела."}},"/workspaces/{workspaceId}/issues/{issueId}/activity":{"get":{"operationId":"listIssueActivity","summary":"История задачи","x-required-scopes":["issues:read"],"x-read-only":true,"x-destructive":false,"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID пространства, к которому привязан токен."},{"name":"issueId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"UUID ресурса в указанном пространстве."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Размер страницы."},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"description":"Количество пропущенных ресурсов."}],"responses":{"200":{"description":"Успешный запрос","headers":{"X-Request-Id":{"schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPage"}}}},"400":{"description":"Неверные параметры или тело запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Токен отсутствует, истёк или отозван","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"Bearer challenge"}}},"403":{"description":"Недостаточно разрешений или бизнес-прав","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден или недоступен в этом пространстве","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт версии или ключа идемпотентности","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело запроса слишком велико","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит запросов; подождите Retry-After секунд","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until next rate window"}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Возвращает страницу истории задачи с автором, видом изменения и изменёнными значениями. Запись изменения и истории выполняется атомарно."}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"pmly personal token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"string","description":"Машиночитаемый код ошибки."},"message":{"type":"string","description":"Описание ошибки."},"requestId":{"type":"string","format":"uuid","description":"UUID запроса; также возвращается в X-Request-Id."}},"required":["code","message","requestId"],"additionalProperties":false},"Workspace":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"name":{"type":"string","description":"Название ресурса.","examples":["Пример названия"]},"role":{"type":"string","enum":["OWNER","MEMBER"],"description":"Роль участника: OWNER или MEMBER."}},"required":["id","name","role"],"additionalProperties":false},"Team":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"workspaceId":{"type":"string","format":"uuid","description":"UUID пространства, к которому привязан токен."},"name":{"type":"string","description":"Название ресурса.","examples":["Пример названия"]},"key":{"type":"string","description":"Ключ команды, используемый в отображаемых номерах задач."}},"required":["id","workspaceId","name","key"],"additionalProperties":false},"Status":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"label":{"type":"string","description":"Название статуса."},"category":{"type":"string","enum":["backlog","unstarted","started","completed","canceled"],"description":"Категория статуса."},"order":{"type":"integer","description":"Порядок статуса в команде."},"defaultStatus":{"type":"boolean","description":"Является ли статус начальным для команды."}},"required":["id","teamId","label","category","order","defaultStatus"],"additionalProperties":false},"Member":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","description":"UUID пользователя."},"displayName":{"type":["string","null"],"description":"Отображаемое имя пользователя."},"role":{"type":"string","enum":["OWNER","MEMBER"],"description":"Роль участника: OWNER или MEMBER."}},"required":["userId","displayName","role"],"additionalProperties":false},"Context":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"displayName":{"type":["string","null"]}},"required":["id","displayName"],"additionalProperties":false,"description":"Пользователь, от имени которого действует токен."},"workspace":{"$ref":"#/components/schemas/Workspace","description":"Пространство токена и текущая роль пользователя."},"scopes":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Разрешения токена."},"expiresAt":{"type":"string","format":"date-time","description":"Дата и время истечения токена."}},"required":["user","workspace","scopes","expiresAt"],"additionalProperties":false},"Issue":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"workspaceId":{"type":"string","format":"uuid","description":"UUID пространства, к которому привязан токен."},"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"projectId":{"type":["string","null"],"format":"uuid","description":"UUID проекта. null означает отсутствие проекта."},"statusId":{"type":"string","format":"uuid","description":"UUID статуса команды задачи."},"assigneeId":{"type":["string","null"],"format":"uuid","description":"UUID активного участника. null снимает назначение."},"number":{"type":"integer","minimum":1,"description":"Номер задачи, назначенный сервером; уникален в команде."},"identifier":{"type":"string","description":"Отображаемый ID задачи, например API-1.","examples":["API-1"]},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Название задачи.","examples":["Задача через API"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."},"priority":{"type":"integer","minimum":0,"maximum":4,"description":"Приоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий."},"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"createdAt":{"type":"string","format":"date-time","description":"Дата и время создания в UTC."},"updatedAt":{"type":"string","format":"date-time","description":"Дата и время последнего изменения в UTC."},"cycleId":{"type":["string","null"],"format":"uuid","description":"UUID цикла команды. null снимает цикл."}},"required":["id","workspaceId","teamId","projectId","statusId","assigneeId","number","identifier","title","description","priority","version","createdAt","updatedAt","cycleId"],"additionalProperties":false},"Project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."},"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]}},"required":["id","teamId","name","description","version"],"additionalProperties":false},"Cycle":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"workspaceId":{"type":"string","format":"uuid","description":"UUID пространства, к которому привязан токен."},"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"startDate":{"type":"string","format":"date","description":"Дата начала цикла, YYYY-MM-DD.","examples":["2026-10-01"]},"endDate":{"type":"string","format":"date","description":"Дата окончания цикла, YYYY-MM-DD.","examples":["2026-10-14"]},"state":{"type":"string","enum":["open","completed"],"description":"Состояние цикла."},"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]}},"required":["id","workspaceId","teamId","name","startDate","endDate","state","version"],"additionalProperties":false},"ViewSettings":{"type":"object","properties":{"q":{"type":"string","description":"Вхождение в название или точный отображаемый ID задачи."},"projectId":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"statusId":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"assigneeId":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"cycleId":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"category":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"priority":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4},"maxItems":100,"description":"Выбранные значения фильтра. Значения одного поля — OR, разные поля — AND."},"groupBy":{"type":"string","enum":["none","status","priority","assignee","project","cycle"],"description":"Поле группировки."},"sortBy":{"type":"string","enum":["createdAt","updatedAt","priority"],"description":"Поле сортировки."},"sortDirection":{"type":"string","enum":["asc","desc"],"description":"Направление сортировки."}},"required":[],"additionalProperties":false},"View":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"workspaceId":{"type":"string","format":"uuid","description":"UUID пространства, к которому привязан токен."},"authorId":{"type":"string","format":"uuid","description":"UUID автора."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"settings":{"$ref":"#/components/schemas/ViewSettings","description":"Фильтры и отображение представления. При PATCH переданный объект заменяется целиком."},"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]}},"required":["id","workspaceId","authorId","name","settings","version"],"additionalProperties":false},"Comment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"workspaceId":{"type":"string","format":"uuid","description":"UUID пространства, к которому привязан токен."},"issueId":{"type":"string","format":"uuid"},"authorId":{"type":"string","format":"uuid","description":"UUID автора."},"authorName":{"type":"string","description":"Имя автора."},"body":{"type":"string","maxLength":20000,"description":"Текст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой.","examples":["Комментарий через API"]},"createdAt":{"type":"string","format":"date-time","description":"Дата и время создания в UTC."},"updatedAt":{"type":"string","format":"date-time","description":"Дата и время последнего изменения в UTC."},"deletedAt":{"type":["string","null"],"format":"date-time","description":"Дата удаления; null для действующего комментария.","examples":[null]},"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"mentions":{"type":"array","items":{"$ref":"#/components/schemas/CommentMention"},"maxItems":100,"description":"Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются.","examples":[[]]},"sourceClient":{"type":["string","null"],"maxLength":100,"description":"Название MCP-клиента, назначенное сервером. null для обычного пользовательского или REST-комментария.","examples":[null]}},"required":["id","workspaceId","issueId","authorId","authorName","body","createdAt","updatedAt","deletedAt","version","mentions"],"additionalProperties":false},"Activity":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Постоянный UUID ресурса."},"actorId":{"type":"string","format":"uuid","description":"UUID автора изменения."},"actorName":{"type":"string","description":"Имя автора изменения."},"kind":{"type":"string","description":"Вид события истории."},"changes":{"type":"object","additionalProperties":true,"description":"Изменённые поля и значения."},"createdAt":{"type":"string","format":"date-time","description":"Дата и время создания в UTC."}},"required":["id","actorId","actorName","kind","changes","createdAt"],"additionalProperties":false},"WorkspacePage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"TeamPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Team"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"StatusPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Status"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"MemberPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Member"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"IssuePage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Issue"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"ProjectPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Project"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"CyclePage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Cycle"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"ViewPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/View"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"CommentPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"ActivityPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Activity"},"description":"Ресурсы текущей страницы."},"total":{"type":"integer","minimum":0,"description":"Общее количество ресурсов, соответствующих запросу."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Размер страницы."},"offset":{"type":"integer","minimum":0,"maximum":100000,"description":"Количество пропущенных ресурсов."}},"required":["items","total","limit","offset"],"additionalProperties":false},"CreateIssue":{"type":"object","properties":{"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"projectId":{"type":["string","null"],"format":"uuid","description":"UUID проекта. null означает отсутствие проекта."},"statusId":{"type":"string","format":"uuid","description":"UUID статуса команды задачи."},"assigneeId":{"type":["string","null"],"format":"uuid","description":"UUID активного участника. null снимает назначение."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Название задачи.","examples":["Задача через API"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."},"priority":{"type":"integer","minimum":0,"maximum":4,"description":"Приоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий."},"cycleId":{"type":["string","null"],"format":"uuid","description":"UUID цикла команды. null снимает цикл."}},"required":["teamId","title"],"additionalProperties":false},"UpdateIssue":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"projectId":{"type":["string","null"],"format":"uuid","description":"UUID проекта. null означает отсутствие проекта."},"statusId":{"type":"string","format":"uuid","description":"UUID статуса команды задачи."},"assigneeId":{"type":["string","null"],"format":"uuid","description":"UUID активного участника. null снимает назначение."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Название задачи.","examples":["Задача через API"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."},"priority":{"type":"integer","minimum":0,"maximum":4,"description":"Приоритет: 0 — без приоритета, 1 — срочный, 2 — высокий, 3 — средний, 4 — низкий."},"cycleId":{"type":["string","null"],"format":"uuid","description":"UUID цикла команды. null снимает цикл."}},"required":["version"],"additionalProperties":false},"CreateProject":{"type":"object","properties":{"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."}},"required":["teamId","name"],"additionalProperties":false},"UpdateProject":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"description":{"type":"string","maxLength":20000,"description":"Описание. Пустая строка очищает текст."}},"required":["version"],"additionalProperties":false},"CreateCycle":{"type":"object","properties":{"teamId":{"type":"string","format":"uuid","description":"UUID команды ресурса."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"startDate":{"type":"string","format":"date","description":"Дата начала цикла, YYYY-MM-DD.","examples":["2026-10-01"]},"endDate":{"type":"string","format":"date","description":"Дата окончания цикла, YYYY-MM-DD.","examples":["2026-10-14"]}},"required":["teamId","name","startDate","endDate"],"additionalProperties":false},"UpdateCycle":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"startDate":{"type":"string","format":"date","description":"Дата начала цикла, YYYY-MM-DD.","examples":["2026-10-01"]},"endDate":{"type":"string","format":"date","description":"Дата окончания цикла, YYYY-MM-DD.","examples":["2026-10-14"]}},"required":["version"],"additionalProperties":false},"CompleteCycle":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]}},"required":["version"],"additionalProperties":false},"CreateView":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"settings":{"$ref":"#/components/schemas/ViewSettings","description":"Фильтры и отображение представления. При PATCH переданный объект заменяется целиком."}},"required":["name","settings"],"additionalProperties":false},"UpdateView":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Название ресурса.","examples":["Пример названия"]},"settings":{"$ref":"#/components/schemas/ViewSettings","description":"Фильтры и отображение представления. При PATCH переданный объект заменяется целиком."}},"required":["version"],"additionalProperties":false},"CreateComment":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000,"description":"Текст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой.","examples":["Комментарий через API"]},"mentions":{"type":"array","items":{"$ref":"#/components/schemas/CommentMention"},"maxItems":100,"description":"Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются.","examples":[[]]}},"required":["body"],"additionalProperties":false},"UpdateComment":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"description":"Текущая версия ресурса; обязательна для изменения.","examples":[1]},"body":{"type":"string","minLength":1,"maxLength":20000,"description":"Текст комментария; пробелы по краям удаляются. У удалённого комментария текст пустой.","examples":["Комментарий через API"]},"mentions":{"type":"array","items":{"$ref":"#/components/schemas/CommentMention"},"maxItems":100,"description":"Непересекающиеся @упоминания участников. При изменении body без mentions очищаются; при запросе только с version сохраняются.","examples":[[]]}},"required":["version"],"additionalProperties":false},"CommentMention":{"type":"object","description":"Упоминание участника пространства. Смещения UTF-16 start включительно / end не включительно покрывают @имя в переданном body. В ответе смещения относятся к сохранённому тексту после удаления пробелов по краям.","properties":{"userId":{"type":"string","format":"uuid","description":"UUID пользователя."},"start":{"type":"integer","minimum":0,"description":"Начало @упоминания включительно, в UTF-16 единицах."},"end":{"type":"integer","minimum":2,"description":"Конец @упоминания не включительно, в UTF-16 единицах."}},"required":["userId","start","end"],"additionalProperties":false}}}}