From bb8496cb3f9b4008bf2d37d89302f220b0807b34 Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 11 Jan 2023 23:18:51 +0100 Subject: [PATCH] ETAPI method to create note revision, #3509 --- src/etapi/etapi.openapi.yaml | 27 +++++++++++++++++++++++++++ src/etapi/notes.js | 9 +++++++++ test-etapi/post-note-revision.http | 23 +++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 test-etapi/post-note-revision.http diff --git a/src/etapi/etapi.openapi.yaml b/src/etapi/etapi.openapi.yaml index 2928ffcb1..b8f0b5382 100644 --- a/src/etapi/etapi.openapi.yaml +++ b/src/etapi/etapi.openapi.yaml @@ -291,6 +291,33 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + /notes/{noteId}/note-revision: + parameters: + - name: noteId + in: path + required: true + schema: + $ref: '#/components/schemas/EntityId' + - name: format + in: query + required: false + schema: + enum: + - html + - markdown + default: html + post: + description: Create a note revision for the given note + operationId: createNoteRevision + responses: + '204': + description: revision has been created + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' /branches/{branchId}: parameters: - name: branchId diff --git a/src/etapi/notes.js b/src/etapi/notes.js index b1f929ee7..065cefab5 100644 --- a/src/etapi/notes.js +++ b/src/etapi/notes.js @@ -8,6 +8,7 @@ const v = require("./validators"); const searchService = require("../services/search/services/search"); const SearchContext = require("../services/search/search_context"); const zipExportService = require("../services/export/zip"); +const noteRevisionService = require("../services/note_revisions.js"); function register(router) { eu.route(router, 'get', '/etapi/notes', (req, res, next) => { @@ -143,6 +144,14 @@ function register(router) { zipExportService.exportToZip(taskContext, branch, format, res); }); + + eu.route(router, 'post' ,'/etapi/notes/:noteId/note-revision', (req, res, next) => { + const note = eu.getAndCheckNote(req.params.noteId); + + note.saveNoteRevision(); + + return res.sendStatus(204); + }); } function parseSearchParams(req) { diff --git a/test-etapi/post-note-revision.http b/test-etapi/post-note-revision.http new file mode 100644 index 000000000..74b9f7152 --- /dev/null +++ b/test-etapi/post-note-revision.http @@ -0,0 +1,23 @@ +POST {{triliumHost}}/etapi/create-note +Authorization: {{authToken}} +Content-Type: application/json + +{ + "parentNoteId": "root", + "title": "Hello", + "type": "code", + "mime": "text/plain", + "content": "Hi there!" +} + +> {% client.global.set("createdNoteId", response.body.note.noteId); %} + +### + +POST {{triliumHost}}/etapi/notes/{{createdNoteId}}/note-revision +Authorization: {{authToken}} +Content-Type: text/plain + +Changed content + +> {% client.assert(response.status === 204); %}