mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
using 201 for created entities in etapi
This commit is contained in:
parent
ce046b2e20
commit
2248d98cc7
BIN
db/demo.zip
BIN
db/demo.zip
Binary file not shown.
@ -19,20 +19,20 @@ function register(router) {
|
||||
'value': [v.notNull, v.isString],
|
||||
'isInheritable': [v.notNull, v.isBoolean]
|
||||
};
|
||||
|
||||
|
||||
eu.route(router, 'post' ,'/etapi/attributes', (req, res, next) => {
|
||||
if (req.body.type === 'relation') {
|
||||
eu.getAndCheckNote(req.body.value);
|
||||
}
|
||||
|
||||
|
||||
const params = {};
|
||||
|
||||
|
||||
eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_ATTRIBUTE);
|
||||
|
||||
try {
|
||||
const attr = attributeService.createAttribute(params);
|
||||
|
||||
res.json(mappers.mapAttributeToPojo(attr));
|
||||
res.status(201).json(mappers.mapAttributeToPojo(attr));
|
||||
}
|
||||
catch (e) {
|
||||
throw new eu.EtapiError(500, eu.GENERIC_CODE, e.message);
|
||||
@ -49,9 +49,9 @@ function register(router) {
|
||||
if (attribute.type === 'relation') {
|
||||
eu.getAndCheckNote(req.body.value);
|
||||
}
|
||||
|
||||
|
||||
eu.validateAndPatch(attribute, req.body, ALLOWED_PROPERTIES_FOR_PATCH);
|
||||
|
||||
|
||||
attribute.save();
|
||||
|
||||
res.json(mappers.mapAttributeToPojo(attribute));
|
||||
|
@ -12,8 +12,8 @@ function register(router) {
|
||||
}
|
||||
|
||||
const {authToken} = etapiTokenService.createToken(tokenName || "ETAPI login");
|
||||
|
||||
res.json({
|
||||
|
||||
res.status(201).json({
|
||||
authToken
|
||||
});
|
||||
});
|
||||
@ -26,18 +26,18 @@ function register(router) {
|
||||
}
|
||||
|
||||
const etapiToken = becca.getEtapiToken(parsed.etapiTokenId);
|
||||
|
||||
|
||||
if (!etapiToken) {
|
||||
// shouldn't happen since this already passed auth validation
|
||||
throw new Error(`Cannot find the token ${parsed.etapiTokenId}.`);
|
||||
}
|
||||
|
||||
|
||||
etapiToken.markAsDeletedSimple();
|
||||
|
||||
|
||||
res.sendStatus(204);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
register
|
||||
}
|
||||
}
|
||||
|
@ -22,10 +22,10 @@ function register(router) {
|
||||
'prefix': [v.isString],
|
||||
'isExpanded': [v.notNull, v.isBoolean]
|
||||
};
|
||||
|
||||
|
||||
eu.route(router, 'post' ,'/etapi/branches', (req, res, next) => {
|
||||
const params = {};
|
||||
|
||||
|
||||
eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_BRANCH);
|
||||
|
||||
const existing = becca.getBranchFromChildAndParent(params.noteId, params.parentNoteId);
|
||||
@ -33,15 +33,16 @@ function register(router) {
|
||||
if (existing) {
|
||||
existing.notePosition = params.notePosition;
|
||||
existing.prefix = params.prefix;
|
||||
existing.isExpanded = params.isExpanded;
|
||||
existing.save();
|
||||
|
||||
return res.json(mappers.mapBranchToPojo(existing));
|
||||
return res.status(200).json(mappers.mapBranchToPojo(existing));
|
||||
}
|
||||
|
||||
try {
|
||||
const branch = new Branch(params).save();
|
||||
|
||||
res.json(mappers.mapBranchToPojo(branch));
|
||||
res.status(201).json(mappers.mapBranchToPojo(branch));
|
||||
}
|
||||
catch (e) {
|
||||
throw new eu.EtapiError(400, eu.GENERIC_CODE, e.message);
|
||||
|
@ -27,7 +27,7 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreateNoteDef'
|
||||
responses:
|
||||
'200':
|
||||
'201':
|
||||
description: note created
|
||||
content:
|
||||
application/json:
|
||||
@ -56,7 +56,7 @@ paths:
|
||||
description: search query string as described in https://github.com/zadam/trilium/wiki/Search
|
||||
schema:
|
||||
type: string
|
||||
examples:
|
||||
examples:
|
||||
fulltext:
|
||||
summary: Fulltext search for keywords (not exact match)
|
||||
value: 'towers tolkien'
|
||||
@ -205,7 +205,7 @@ paths:
|
||||
$ref: '#/components/schemas/Note'
|
||||
responses:
|
||||
'200':
|
||||
description: update note
|
||||
description: note updated
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
@ -252,7 +252,10 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
post:
|
||||
description: create a branch (clone a note to a different location in the tree)
|
||||
description: >
|
||||
Create a branch (clone a note to a different location in the tree).
|
||||
In case there is a branch between parent note and child note already,
|
||||
then this will update the existing branch with prefix, notePosition and isExpanded.
|
||||
operationId: postBranch
|
||||
requestBody:
|
||||
required: true
|
||||
@ -262,11 +265,17 @@ paths:
|
||||
$ref: '#/components/schemas/Branch'
|
||||
responses:
|
||||
'200':
|
||||
description: update branch
|
||||
description: branch updated (branch between parent note and child note already existed)
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Note'
|
||||
$ref: '#/components/schemas/Branch'
|
||||
'201':
|
||||
description: branch created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Branch'
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
@ -284,11 +293,11 @@ paths:
|
||||
$ref: '#/components/schemas/Branch'
|
||||
responses:
|
||||
'200':
|
||||
description: update branch
|
||||
description: branch updated
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Note'
|
||||
$ref: '#/components/schemas/Branch'
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
@ -342,8 +351,8 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Attribute'
|
||||
responses:
|
||||
'200':
|
||||
description: update attribute
|
||||
'201':
|
||||
description: attribute created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
@ -365,7 +374,7 @@ paths:
|
||||
$ref: '#/components/schemas/Attribute'
|
||||
responses:
|
||||
'200':
|
||||
description: update attribute
|
||||
description: attribute updated
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
@ -421,7 +430,7 @@ paths:
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
type: string
|
||||
format: date
|
||||
example: 2022-02-22
|
||||
responses:
|
||||
@ -547,17 +556,17 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
properties:
|
||||
password:
|
||||
type: string
|
||||
description: user's password used to e.g. login to Trilium server and/or protect notes
|
||||
responses:
|
||||
'200':
|
||||
'201':
|
||||
description: auth token
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
properties:
|
||||
authToken:
|
||||
type: string
|
||||
example: Bc4bFn0Ffiok_4NpbVCDnFz7B2WU+pdhW8B5Ne3DiR5wXrEyqdjgRIsk=
|
||||
@ -602,7 +611,7 @@ components:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
enum:
|
||||
enum:
|
||||
- text
|
||||
- code
|
||||
- file
|
||||
|
@ -15,21 +15,21 @@ function register(router) {
|
||||
if (!search?.trim()) {
|
||||
throw new eu.EtapiError(400, 'SEARCH_QUERY_PARAM_MANDATORY', "'search' query parameter is mandatory");
|
||||
}
|
||||
|
||||
|
||||
const searchParams = parseSearchParams(req);
|
||||
const searchContext = new SearchContext(searchParams);
|
||||
|
||||
|
||||
const searchResults = searchService.findResultsWithQuery(search, searchContext);
|
||||
const foundNotes = searchResults.map(sr => becca.notes[sr.noteId]);
|
||||
|
||||
|
||||
const resp = {
|
||||
results: foundNotes.map(note => mappers.mapNoteToPojo(note))
|
||||
};
|
||||
|
||||
|
||||
if (searchContext.debugInfo) {
|
||||
resp.debugInfo = searchContext.debugInfo;
|
||||
}
|
||||
|
||||
|
||||
res.json(resp);
|
||||
});
|
||||
|
||||
@ -51,16 +51,16 @@ function register(router) {
|
||||
'noteId': [v.notNull, v.isValidEntityId],
|
||||
'branchId': [v.notNull, v.isValidEntityId],
|
||||
};
|
||||
|
||||
|
||||
eu.route(router, 'post' ,'/etapi/create-note', (req, res, next) => {
|
||||
const params = {};
|
||||
|
||||
|
||||
eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_NOTE);
|
||||
|
||||
try {
|
||||
const resp = noteService.createNewNote(params);
|
||||
|
||||
res.json({
|
||||
res.status(201).json({
|
||||
note: mappers.mapNoteToPojo(resp.note),
|
||||
branch: mappers.mapBranchToPojo(resp.branch)
|
||||
});
|
||||
|
@ -218,9 +218,10 @@ class NoteContext extends Component {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
hasNoteList() {
|
||||
return this.note.hasChildren()
|
||||
return this.note
|
||||
&& this.note.hasChildren()
|
||||
&& ['book', 'text', 'code'].includes(this.note.type)
|
||||
&& this.note.mime !== 'text/x-sqlite;schema=trilium'
|
||||
&& !this.note.hasLabel('hideChildrenOverview');
|
||||
|
@ -6,7 +6,7 @@ Content-Type: application/json
|
||||
}
|
||||
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
|
||||
client.assert(response.status === 201);
|
||||
|
||||
client.global.set("authToken", response.body.authToken);
|
||||
%}
|
||||
%}
|
||||
|
@ -11,15 +11,15 @@ Content-Type: application/json
|
||||
"content": "Hi there!"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
> {%
|
||||
client.assert(response.status === 201);
|
||||
client.assert(response.body.note.noteId.startsWith("forcedId"));
|
||||
client.assert(response.body.note.title == "Hello");
|
||||
client.assert(response.body.branch.branchId.startsWith("forcedId"));
|
||||
client.assert(response.body.branch.parentNoteId == "root");
|
||||
|
||||
client.log(`Created note ` + response.body.note.noteId + ` and branch ` + response.body.branch.branchId);
|
||||
|
||||
|
||||
client.global.set("createdNoteId", response.body.note.noteId);
|
||||
client.global.set("createdBranchId", response.body.branch.branchId);
|
||||
%}
|
||||
@ -37,11 +37,11 @@ Content-Type: application/json
|
||||
}
|
||||
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
client.assert(response.status === 201);
|
||||
client.assert(response.body.parentNoteId == "hidden");
|
||||
|
||||
client.global.set("clonedBranchId", response.body.branchId);
|
||||
|
||||
|
||||
client.log(`Created cloned branch ` + response.body.branchId);
|
||||
%}
|
||||
|
||||
@ -107,9 +107,9 @@ Authorization: {{authToken}}
|
||||
}
|
||||
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
client.assert(response.status === 201);
|
||||
client.assert(response.body.attributeId.startsWith("forcedAttributeId"));
|
||||
|
||||
|
||||
client.global.set("createdAttributeId", response.body.attributeId);
|
||||
%}
|
||||
|
||||
@ -121,4 +121,4 @@ Authorization: {{authToken}}
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
client.assert(response.body.attributeId == client.global.get("createdAttributeId"));
|
||||
%}
|
||||
%}
|
||||
|
@ -6,8 +6,8 @@ Content-Type: application/json
|
||||
}
|
||||
|
||||
> {%
|
||||
client.assert(response.status === 200);
|
||||
|
||||
client.assert(response.status === 201);
|
||||
|
||||
client.global.set("testAuthToken", response.body.authToken);
|
||||
%}
|
||||
|
||||
@ -31,4 +31,4 @@ Content-Type: application/json
|
||||
GET {{triliumHost}}/etapi/notes/root
|
||||
Authorization: {{testAuthToken}}
|
||||
|
||||
> {% client.assert(response.status === 401); %}
|
||||
> {% client.assert(response.status === 401); %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user