Страницы и заметки
Страницы, Markdown-примечания, папки и цветовая легенда проекта.
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Заметки проекта с полным Markdownnotes:read
Формат запроса
Path: projectId (UUID). Тело и query отсутствуют.Формат ответа
200 · data: { notes: ProjectNote[] }; ProjectNote содержит id, title, markdown, visibility, version, createdAt и updatedAt.POST/projects/{projectId}/notesСоздать заметкуnotes:write
Формат запроса
JSON: { title: string, markdown: string, visibility: PROJECT_MEMBERS | PUBLIC }.Формат ответа
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 для текущего пользователя.GET/projects/{projectId}/pages/{pageId}Получить страницу проектаpages: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}Получить полную Markdown-заметку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 }.Формат ответа
200 · data: обновлённый ProjectNote; ETag содержит новую version.DELETE/projects/{projectId}/notes/{noteId}Удалить заметкуnotes:write
Формат запроса
Headers: If-Match. Path: projectId, noteId (UUID). Тело отсутствует.Формат ответа
204 No Content.