SEOньоритаДокументация API
API v1Страницы и заметки
Public API v1

Страницы и заметки

Страницы, 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.