Страницы и заметки
Страницы, файлы заметок, папки и цветовая легенда проекта.
GET/projects/{projectId}/pagesСтраницы проектаpages:read
Формат запроса
Path: projectId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.POST/projects/{projectId}/pagesСоздать страницуpages:write
Формат запроса
Path: projectId: UUID. Content-Type: application/json; неизвестные поля отклоняются.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/notesФайлы заметок проекта с содержимымnotes:read
Формат запроса
Path: projectId (UUID). Тело и query отсутствуют.Формат ответа
200 · data: { notes: ProjectNote[] }; ProjectNote содержит id, title, format, markdown, visibility, version, createdAt и updatedAt. Поле markdown хранит текст выбранного формата.POST/projects/{projectId}/notesСоздать заметкуnotes:write
Формат запроса
JSON: { title: string, markdown: string, visibility: PROJECT_MEMBERS | PUBLIC, format?: MARKDOWN | TEXT | CSV | TSV | JSON }. По умолчанию MARKDOWN.Формат ответа
201 · data: ProjectNote; заголовок ETag содержит актуальную version.GET/projects/{projectId}/semantic-group-color-legendПримечания к цветам папокsemantics:read
Формат запроса
Path: projectId (UUID). Тело и query отсутствуют.Формат ответа
200 · data: { entries: [{ color, note }], version, unread, updatedAt?, updatedByUserId?, access: { canManage } }.PATCH/projects/{projectId}/semantic-group-color-legendЗаменить примечания цветовой легендыsemantics:write
Формат запроса
Headers: If-Match. JSON: { entries: [{ color: paletteColor, note: string(1..240) }] }.Формат ответа
200 · data: SemanticGroupColorLegend; ETag содержит новую version.POST/projects/{projectId}/semantic-group-color-legend/seenОтметить текущую версию цветовой легенды просмотреннойsemantics:read
Формат запроса
JSON: { version: non-negative integer }.Формат ответа
200 · data: SemanticGroupColorLegend с unread=false для текущего пользователя.POST/projects/{projectId}/pages/status-jobsФоновое архивирование или восстановление страницpages:write
Формат запроса
Path: projectId: UUID. Content-Type: application/json; неизвестные поля отклоняются.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/pages/status-jobs/{jobId}Прогресс операции со страницамиpages:read
Формат запроса
Path: projectId: UUID, jobId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/pages/{pageId}Получить страницу проектаpages:read
Формат запроса
Path: projectId: UUID, pageId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/pages/rank-statisticsПакетная статистика страниц; также нужен positions:readpages:read
Формат запроса
Path: projectId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/pages/by-keyword/{keywordId}Целевая страница запроса; также нужен semantics:readpages:read
Формат запроса
Path: projectId: UUID, keywordId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/pages/{pageId}/panelСсылки, история или семантика страницы; для ключей нужен semantics:readpages:read
Формат запроса
Path: projectId: UUID, pageId: UUID. JSON body отсутствует, если для метода явно не указано обратное.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.PATCH/projects/{projectId}/pages/{pageId}Изменить страницу проектаpages:write
Формат запроса
Path: projectId: UUID, pageId: UUID. Content-Type: application/json; неизвестные поля отклоняются.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.POST/projects/{projectId}/pages/{pageId}/archiveАрхивировать страницуpages:write
Формат запроса
Path: projectId: UUID, pageId: UUID. Content-Type: application/json; неизвестные поля отклоняются.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.POST/projects/{projectId}/pages/{pageId}/restoreВосстановить страницуpages:write
Формат запроса
Path: projectId: UUID, pageId: UUID. Content-Type: application/json; неизвестные поля отклоняются.Формат ответа
JSON { data: <типизированный результат>, meta: { requestId }, page?: { hasNext, nextCursor } }.GET/projects/{projectId}/notes/{noteId}Получить файл заметки с содержимымnotes:read
Формат запроса
Path: projectId, noteId (UUID). Тело и query отсутствуют.Формат ответа
200 · data: ProjectNote; ETag содержит version для последующего PATCH или DELETE.PATCH/projects/{projectId}/notes/{noteId}Изменить заметкуnotes:write
Формат запроса
Headers: If-Match. JSON: любое непустое подмножество { title, markdown, visibility, format }.Формат ответа
200 · data: обновлённый ProjectNote; ETag содержит новую version.DELETE/projects/{projectId}/notes/{noteId}Удалить заметкуnotes:write
Формат запроса
Headers: If-Match. Path: projectId, noteId (UUID). Тело отсутствует.Формат ответа
204 No Content.