1776 lines
52 KiB
JSON
1776 lines
52 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"version": "1.0.0",
|
|
"title": "ETAPI",
|
|
"description": "Trilium 외부 API",
|
|
"contact": {
|
|
"name": "zadam",
|
|
"email": "zadam.apps@gmail.com",
|
|
"url": "https://github.com/zadam/trilium"
|
|
},
|
|
"license": {
|
|
"name": "Apache 2.0",
|
|
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
|
}
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "/etapi",
|
|
"description": "현재 Trilium 서버"
|
|
}
|
|
],
|
|
"security": [
|
|
{
|
|
"EtapiTokenAuth": []
|
|
},
|
|
{
|
|
"EtapiBasicAuth": []
|
|
}
|
|
],
|
|
"paths": {
|
|
"/create-note": {
|
|
"post": {
|
|
"description": "노트를 만들고 노트 트리에 배치합니다.",
|
|
"operationId": "createNote",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateNoteDef"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "노트 생성 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NoteWithBranch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes": {
|
|
"get": {
|
|
"description": "노트 검색",
|
|
"operationId": "searchNotes",
|
|
"parameters": [
|
|
{
|
|
"name": "search",
|
|
"in": "query",
|
|
"required": true,
|
|
"description": "https://triliumnext.github.io/Docs/Wiki/search.html 에 설명된 형식의 검색어",
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"examples": {
|
|
"fulltext": {
|
|
"summary": "검색어로 전체 텍스트 검색. 정확히 일치할 필요는 없습니다.",
|
|
"value": "towers tolkien"
|
|
},
|
|
"fulltextExactMatch": {
|
|
"summary": "정확히 일치하는 전체 텍스트 검색. 큰따옴표를 사용합니다.",
|
|
"value": "\"Two Towers\""
|
|
},
|
|
"fulltextWithLabel": {
|
|
"summary": "검색어와 라벨 조건을 모두 만족하는 전체 텍스트 검색",
|
|
"value": "towers #book"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "fastSearch",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "빠른 검색 사용. 전체 텍스트 검색에서 본문은 확인하지 않습니다.",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
{
|
|
"name": "includeArchivedNotes",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "기본적으로 보관된 노트는 검색하지 않습니다. true로 설정하면 검색 결과에 포함합니다.",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
{
|
|
"name": "ancestorNoteId",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "지정한 subtree 노트 ID의 하위 트리만 검색합니다. 기본값은 전체 트리입니다.",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
},
|
|
{
|
|
"name": "ancestorDepth",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "검색할 노트의 트리 깊이를 지정합니다.",
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"examples": {
|
|
"directChildren": {
|
|
"summary": "기준 상위 노트에서 정확히 한 단계 아래인 직계 하위 노트. 기준을 지정하지 않으면 루트입니다.",
|
|
"value": "eq1"
|
|
},
|
|
"grandGrandChildren": {
|
|
"summary": "기준 상위 노트에서 정확히 세 단계 아래. 기준을 지정하지 않으면 루트입니다.",
|
|
"value": "eq3"
|
|
},
|
|
"lessThan4": {
|
|
"summary": "기준 상위 노트에서 네 단계 미만인 깊이 1~3. 기준을 지정하지 않으면 루트입니다.",
|
|
"value": "lt4"
|
|
},
|
|
"greaterThan2": {
|
|
"summary": "기준 상위 노트에서 두 단계보다 깊은 위치. 깊이 3부터 해당하며 기준을 지정하지 않으면 루트입니다.",
|
|
"value": "gt4"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "orderBy",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "검색 결과 정렬에 사용할 속성 또는 라벨 이름",
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"example": [
|
|
"title",
|
|
"#publicationDate",
|
|
"isProtected",
|
|
"isArchived",
|
|
"dateCreated",
|
|
"dateModified",
|
|
"utcDateCreated",
|
|
"utcDateModified",
|
|
"parentCount",
|
|
"childrenCount",
|
|
"attributeCount",
|
|
"labelCount",
|
|
"ownedLabelCount",
|
|
"relationCount",
|
|
"ownedRelationCount",
|
|
"relationCountIncludingLinks",
|
|
"ownedRelationCountIncludingLinks",
|
|
"targetRelationCount",
|
|
"targetRelationCountIncludingLinks",
|
|
"contentSize",
|
|
"contentAndAttachmentsSize",
|
|
"contentAndAttachmentsAndRevisionsSize",
|
|
"revisionCount"
|
|
]
|
|
},
|
|
{
|
|
"name": "orderDirection",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "정렬 방향. 오름차순 또는 내림차순입니다.",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "asc",
|
|
"enum": [
|
|
"asc",
|
|
"desc"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "반환할 결과 수 제한",
|
|
"schema": {
|
|
"type": "integer"
|
|
},
|
|
"example": 10
|
|
},
|
|
{
|
|
"name": "debug",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "true로 설정하면 검색어 구문 분석에 관한 디버깅 정보를 응답에 포함합니다.",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "검색 응답",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes/{noteId}": {
|
|
"parameters": [
|
|
{
|
|
"name": "noteId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 노트를 조회합니다.",
|
|
"operationId": "getNoteById",
|
|
"responses": {
|
|
"200": {
|
|
"description": "노트 응답",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"description": "noteId로 지정한 노트에 요청 본문의 변경 사항을 적용합니다.",
|
|
"operationId": "patchNoteById",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "노트 변경 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "noteId로 지정한 노트 하나를 삭제합니다.",
|
|
"operationId": "deleteNoteById",
|
|
"responses": {
|
|
"204": {
|
|
"description": "노트 삭제 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes/{noteId}/content": {
|
|
"parameters": [
|
|
{
|
|
"name": "noteId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 노트 본문을 조회합니다.",
|
|
"operationId": "getNoteContent",
|
|
"responses": {
|
|
"200": {
|
|
"description": "노트 본문 응답",
|
|
"content": {
|
|
"text/html": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "ID로 지정한 노트의 본문을 변경합니다.",
|
|
"operationId": "putNoteContentById",
|
|
"requestBody": {
|
|
"description": "노트의 HTML 본문",
|
|
"required": true,
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "노트 본문 변경 완료"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes/{noteId}/export": {
|
|
"parameters": [
|
|
{
|
|
"name": "noteId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
},
|
|
{
|
|
"name": "format",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"enum": [
|
|
"html",
|
|
"markdown"
|
|
],
|
|
"default": "html"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "지정한 하위 노트 트리를 ZIP 파일로 내보냅니다. 전체 문서를 내보내려면 noteId에 \"root\"를 사용합니다.",
|
|
"operationId": "exportNoteSubtree",
|
|
"responses": {
|
|
"200": {
|
|
"description": "내보낸 ZIP 파일",
|
|
"content": {
|
|
"application/zip": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes/{noteId}/import": {
|
|
"parameters": [
|
|
{
|
|
"name": "noteId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"description": "지정한 노트로 ZIP 파일을 가져옵니다.",
|
|
"operationId": "importZip",
|
|
"responses": {
|
|
"201": {
|
|
"description": "노트 생성 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NoteWithBranch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notes/{noteId}/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": "지정한 노트의 수정 이력을 만듭니다.",
|
|
"operationId": "createRevision",
|
|
"responses": {
|
|
"204": {
|
|
"description": "수정 이력 생성 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/branches": {
|
|
"post": {
|
|
"description": "가지를 만들어 같은 노트를 트리의 다른 위치에도 배치합니다. 상위 노트와 하위 노트 사이에 가지가 이미 있으면 기존 가지의 prefix와 notePosition 및 isExpanded를 변경합니다.",
|
|
"operationId": "postBranch",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "기존 가지 변경 완료. 상위 노트와 하위 노트 사이에 가지가 이미 있었습니다.",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"201": {
|
|
"description": "가지 생성 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/branches/{branchId}": {
|
|
"parameters": [
|
|
{
|
|
"name": "branchId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 가지를 조회합니다.",
|
|
"operationId": "getBranchById",
|
|
"responses": {
|
|
"200": {
|
|
"description": "가지 응답",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"description": "branchId로 지정한 가지에 요청 본문의 변경 사항을 적용합니다. prefix와 notePosition만 변경할 수 있습니다. 다른 속성을 바꾸려면 기존 가지를 삭제하고 새로 만들어야 합니다.",
|
|
"operationId": "patchBranchById",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "가지 변경 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "branchId로 지정한 가지를 삭제합니다. 해당 하위 노트의 마지막 가지라면 노트도 삭제합니다.",
|
|
"operationId": "deleteBranchById",
|
|
"responses": {
|
|
"204": {
|
|
"description": "가지 삭제 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/attachments": {
|
|
"post": {
|
|
"description": "첨부 파일 생성",
|
|
"operationId": "postAttachment",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateAttachment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "첨부 파일 생성 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attachment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/attachments/{attachmentId}": {
|
|
"parameters": [
|
|
{
|
|
"name": "attachmentId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 첨부 파일을 조회합니다.",
|
|
"operationId": "getAttachmentById",
|
|
"responses": {
|
|
"200": {
|
|
"description": "첨부 파일 응답",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attachment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"description": "attachmentId로 지정한 첨부 파일에 요청 본문의 변경 사항을 적용합니다. role과 mime 및 title과 position만 변경할 수 있습니다.",
|
|
"operationId": "patchAttachmentById",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attachment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "속성 변경 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attachment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "attachmentId로 지정한 첨부 파일을 삭제합니다.",
|
|
"operationId": "deleteAttachmentById",
|
|
"responses": {
|
|
"204": {
|
|
"description": "첨부 파일 삭제 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/attachments/{attachmentId}/content": {
|
|
"parameters": [
|
|
{
|
|
"name": "attachmentId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 첨부 파일 내용을 조회합니다.",
|
|
"operationId": "getAttachmentContent",
|
|
"responses": {
|
|
"200": {
|
|
"description": "첨부 파일 내용 응답",
|
|
"content": {
|
|
"text/html": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "ID로 지정한 첨부 파일의 내용을 변경합니다.",
|
|
"operationId": "putAttachmentContentById",
|
|
"requestBody": {
|
|
"description": "첨부 파일의 HTML 내용",
|
|
"required": true,
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "첨부 파일 내용 변경 완료"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/attributes": {
|
|
"post": {
|
|
"description": "지정한 노트에 속성 생성",
|
|
"operationId": "postAttribute",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "속성 생성 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/attributes/{attributeId}": {
|
|
"parameters": [
|
|
{
|
|
"name": "attributeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"description": "ID로 속성을 조회합니다.",
|
|
"operationId": "getAttributeById",
|
|
"responses": {
|
|
"200": {
|
|
"description": "속성 응답",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"description": "attributeId로 지정한 속성에 요청 본문의 변경 사항을 적용합니다. 라벨은 value와 position만 변경할 수 있고 관계는 position만 변경할 수 있습니다. 다른 속성을 바꾸려면 기존 속성을 삭제하고 새로 만들어야 합니다.",
|
|
"operationId": "patchAttributeById",
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "속성 변경 완료",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "attributeId로 지정한 속성을 삭제합니다.",
|
|
"operationId": "deleteAttributeById",
|
|
"responses": {
|
|
"204": {
|
|
"description": "속성 삭제 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/refresh-note-ordering/{parentNoteId}": {
|
|
"parameters": [
|
|
{
|
|
"name": "parentNoteId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"description": "가지의 notePosition은 연결된 클라이언트에 자동으로 전달되지 않습니다. 변경한 순서를 즉시 반영하려면 notePosition을 설정한 뒤 이 기능을 호출하세요. 순서가 바뀐 가지의 parentNoteId를 전달해야 합니다.",
|
|
"operationId": "postRefreshNoteOrdering",
|
|
"responses": {
|
|
"204": {
|
|
"description": "연결된 모든 클라이언트에서 노트 순서를 비동기로 갱신합니다."
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/inbox/{date}": {
|
|
"get": {
|
|
"description": "새 노트를 넣을 수집함 노트를 반환합니다. 날짜 사용 여부는 수집함이 #inbox 라벨로 지정된 고정 노트인지 일지의 날짜별 노트인지에 따라 달라집니다.",
|
|
"operationId": "getInboxNote",
|
|
"parameters": [
|
|
{
|
|
"name": "date",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
"example": "2022-02-22"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "수집함 노트",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/calendar/days/{date}": {
|
|
"get": {
|
|
"description": "지정한 날짜의 일별 노트를 반환합니다. 없으면 새로 만듭니다.",
|
|
"operationId": "getDayNote",
|
|
"parameters": [
|
|
{
|
|
"name": "date",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
"example": "2022-02-22"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "일별 노트",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/calendar/weeks/{date}": {
|
|
"get": {
|
|
"description": "지정한 날짜의 주별 노트를 반환합니다. 없으면 새로 만듭니다.",
|
|
"operationId": "getWeekFirstDayNote",
|
|
"parameters": [
|
|
{
|
|
"name": "date",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
"example": "2022-02-22"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "주별 노트",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/calendar/months/{month}": {
|
|
"get": {
|
|
"description": "지정한 날짜의 주별 노트를 반환합니다. 없으면 새로 만듭니다.",
|
|
"operationId": "getMonthNote",
|
|
"parameters": [
|
|
{
|
|
"name": "month",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "[0-9]{4}-[0-9]{2}"
|
|
},
|
|
"example": "2022-02"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "월별 노트",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/calendar/years/{year}": {
|
|
"get": {
|
|
"description": "지정한 날짜의 주별 노트를 반환합니다. 없으면 새로 만듭니다.",
|
|
"operationId": "getYearNote",
|
|
"parameters": [
|
|
{
|
|
"name": "year",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "[0-9]{4}-[0-9]{2}"
|
|
},
|
|
"example": "2022-02"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "연도별 노트",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/login": {
|
|
"post": {
|
|
"description": "비밀번호로 ETAPI 토큰을 발급받습니다. 이후 ETAPI 호출에 사용합니다.",
|
|
"operationId": "login",
|
|
"security": [],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"properties": {
|
|
"password": {
|
|
"type": "string",
|
|
"description": "Trilium 서버 로그인이나 노트 보호에 사용하는 사용자 비밀번호"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "인증 토큰",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"properties": {
|
|
"authToken": {
|
|
"type": "string",
|
|
"example": "Bc4bFn0Ffiok_4NpbVCDnFz7B2WU+pdhW8B5Ne3DiR5wXrEyqdjgRIsk="
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"429": {
|
|
"description": "짧은 시간에 요청이 너무 많아 클라이언트 IP가 차단됐습니다. 인증 실패가 원인일 수 있습니다. 잠시 후 다시 시도하세요."
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/logout": {
|
|
"post": {
|
|
"description": "ETAPI 토큰을 삭제하거나 비활성화하여 로그아웃합니다.",
|
|
"operationId": "logout",
|
|
"responses": {
|
|
"204": {
|
|
"description": "로그아웃 성공"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/app-info": {
|
|
"get": {
|
|
"description": "실행 중인 Trilium 인스턴스 정보를 반환합니다.",
|
|
"operationId": "getAppInfo",
|
|
"responses": {
|
|
"200": {
|
|
"description": "앱 정보",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/backup/{backupName}": {
|
|
"parameters": [
|
|
{
|
|
"name": "backupName",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "예를 들어 backupName이 \"now\"이면 \"backup-now.db\" 파일에 백업합니다.",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StringId"
|
|
}
|
|
}
|
|
],
|
|
"put": {
|
|
"description": "지정한 이름으로 데이터베이스를 백업합니다.",
|
|
"operationId": "createBackup",
|
|
"responses": {
|
|
"204": {
|
|
"description": "백업 생성 완료"
|
|
},
|
|
"default": {
|
|
"description": "예기치 않은 오류",
|
|
"content": {
|
|
"application/json; charset=utf-8": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"EtapiTokenAuth": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "Authorization"
|
|
},
|
|
"EtapiBasicAuth": {
|
|
"type": "http",
|
|
"scheme": "basic",
|
|
"description": "HTTP 기본 인증에서 사용자 이름은 임의의 문자열을 사용하며 검사하지 않습니다. 예: trilium. 비밀번호 자리에는 발급받은 ETAPI 토큰을 넣습니다. Trilium 로그인 비밀번호는 사용할 수 없습니다. 설정의 ETAPI 항목에서 생성한 토큰을 사용하세요."
|
|
}
|
|
},
|
|
"schemas": {
|
|
"CreateNoteDef": {
|
|
"type": "object",
|
|
"required": [
|
|
"parentNoteId",
|
|
"title",
|
|
"type",
|
|
"content"
|
|
],
|
|
"properties": {
|
|
"parentNoteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"description": "트리에서 상위 노트의 ID"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text",
|
|
"code",
|
|
"file",
|
|
"image",
|
|
"search",
|
|
"book",
|
|
"relationMap",
|
|
"render"
|
|
]
|
|
},
|
|
"mime": {
|
|
"type": "string",
|
|
"description": "노트 유형이 code 또는 file 또는 image일 때만 지정하면 됩니다.",
|
|
"example": "application/json"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"notePosition": {
|
|
"type": "integer",
|
|
"description": "상위 노트 안에서의 순서입니다. 일반적인 순서는 10 단위로 증가합니다. 맨 앞에 넣으려면 5를 사용할 수 있고 두 번째는 15를 사용할 수 있습니다. 맨 뒤에 넣으려면 1000000처럼 큰 값을 사용하세요."
|
|
},
|
|
"prefix": {
|
|
"type": "string",
|
|
"description": "prefix는 노트가 배치된 가지마다 따로 붙이는 제목 접두사입니다. 같은 노트를 두 곳에 배치하고 한쪽에서만 제목을 조금 다르게 표시하려면 접두사를 사용하세요."
|
|
},
|
|
"isExpanded": {
|
|
"type": "boolean",
|
|
"description": "노트를 폴더처럼 펼쳐 표시하려면 true로 설정합니다."
|
|
},
|
|
"noteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"description": "특정 noteId를 강제로 지정하려는 경우에만 입력하세요."
|
|
},
|
|
"branchId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"description": "특정 branchId를 강제로 지정하려는 경우에만 입력하세요."
|
|
},
|
|
"dateCreated": {
|
|
"$ref": "#/components/schemas/LocalDateTime",
|
|
"description": "노트 생성 시각의 현지 타임스탬프입니다. 현재 시간대의 현재 시각이라는 기본값을 바꿀 때만 지정하세요."
|
|
},
|
|
"utcDateCreated": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"description": "노트 생성 시각의 UTC 타임스탬프입니다. 현재 시각이라는 기본값을 바꿀 때만 지정하세요."
|
|
}
|
|
}
|
|
},
|
|
"Note": {
|
|
"type": "object",
|
|
"properties": {
|
|
"noteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"readOnly": true
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text",
|
|
"code",
|
|
"render",
|
|
"file",
|
|
"image",
|
|
"search",
|
|
"relationMap",
|
|
"book",
|
|
"noteMap",
|
|
"mermaid",
|
|
"webView",
|
|
"shortcut",
|
|
"doc",
|
|
"contentWidget",
|
|
"launcher"
|
|
]
|
|
},
|
|
"mime": {
|
|
"type": "string"
|
|
},
|
|
"isProtected": {
|
|
"type": "boolean",
|
|
"readOnly": true
|
|
},
|
|
"blobId": {
|
|
"type": "string",
|
|
"description": "본문 해시 역할을 하는 데이터 객체의 ID"
|
|
},
|
|
"attributes": {
|
|
"$ref": "#/components/schemas/AttributeList",
|
|
"readOnly": true
|
|
},
|
|
"parentNoteIds": {
|
|
"$ref": "#/components/schemas/EntityIdList",
|
|
"readOnly": true
|
|
},
|
|
"childNoteIds": {
|
|
"$ref": "#/components/schemas/EntityIdList",
|
|
"readOnly": true
|
|
},
|
|
"parentBranchIds": {
|
|
"$ref": "#/components/schemas/EntityIdList",
|
|
"readOnly": true
|
|
},
|
|
"childBranchIds": {
|
|
"$ref": "#/components/schemas/EntityIdList",
|
|
"readOnly": true
|
|
},
|
|
"dateCreated": {
|
|
"$ref": "#/components/schemas/LocalDateTime"
|
|
},
|
|
"dateModified": {
|
|
"$ref": "#/components/schemas/LocalDateTime",
|
|
"readOnly": true
|
|
},
|
|
"utcDateCreated": {
|
|
"$ref": "#/components/schemas/UtcDateTime"
|
|
},
|
|
"utcDateModified": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"readOnly": true
|
|
}
|
|
}
|
|
},
|
|
"Branch": {
|
|
"type": "object",
|
|
"description": "가지는 노트를 트리에 배치하며 상위 노트와 하위 노트의 관계를 나타냅니다.",
|
|
"properties": {
|
|
"branchId": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
},
|
|
"noteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"readOnly": true,
|
|
"description": "하위 노트 식별자"
|
|
},
|
|
"parentNoteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"readOnly": true,
|
|
"description": "상위 노트 식별자"
|
|
},
|
|
"prefix": {
|
|
"type": "string"
|
|
},
|
|
"notePosition": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"isExpanded": {
|
|
"type": "boolean"
|
|
},
|
|
"utcDateModified": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"readOnly": true
|
|
}
|
|
}
|
|
},
|
|
"NoteWithBranch": {
|
|
"type": "object",
|
|
"properties": {
|
|
"note": {
|
|
"$ref": "#/components/schemas/Note"
|
|
},
|
|
"branch": {
|
|
"$ref": "#/components/schemas/Branch"
|
|
}
|
|
}
|
|
},
|
|
"Attachment": {
|
|
"type": "object",
|
|
"description": "첨부 파일은 노트에 속하며 제목과 내용을 가집니다.",
|
|
"properties": {
|
|
"attachmentId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"readOnly": true
|
|
},
|
|
"ownerId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"description": "첨부 파일 소유자의 식별자. noteId 또는 revisionId입니다."
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"mime": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"blobId": {
|
|
"type": "string",
|
|
"description": "본문 해시 역할을 하는 데이터 객체의 ID"
|
|
},
|
|
"dateModified": {
|
|
"$ref": "#/components/schemas/LocalDateTime",
|
|
"readOnly": true
|
|
},
|
|
"utcDateModified": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"readOnly": true
|
|
},
|
|
"utcDateScheduledForErasureSince": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"readOnly": true
|
|
},
|
|
"contentLength": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"CreateAttachment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ownerId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"description": "첨부 파일 소유자의 식별자. noteId 또는 revisionId입니다."
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"mime": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"Attribute": {
|
|
"type": "object",
|
|
"description": "속성은 노트에 연결된 키와 값의 쌍이며 라벨과 관계로 나뉩니다.",
|
|
"properties": {
|
|
"attributeId": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
},
|
|
"noteId": {
|
|
"$ref": "#/components/schemas/EntityId",
|
|
"readOnly": true,
|
|
"description": "하위 노트 식별자"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"label",
|
|
"relation"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"pattern": "^[^\\s]+",
|
|
"example": "shareCss"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"isInheritable": {
|
|
"type": "boolean"
|
|
},
|
|
"utcDateModified": {
|
|
"$ref": "#/components/schemas/UtcDateTime",
|
|
"readOnly": true
|
|
}
|
|
}
|
|
},
|
|
"AttributeList": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Attribute"
|
|
}
|
|
},
|
|
"SearchResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"results"
|
|
],
|
|
"properties": {
|
|
"results": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Note"
|
|
}
|
|
},
|
|
"debugInfo": {
|
|
"type": "object",
|
|
"description": "&debug=true로 활성화한 검색어 구문 분석 디버깅 정보"
|
|
}
|
|
}
|
|
},
|
|
"EntityId": {
|
|
"type": "string",
|
|
"pattern": "[a-zA-Z0-9_]{4,32}",
|
|
"example": "evnnmvHTCgIn"
|
|
},
|
|
"StringId": {
|
|
"type": "string",
|
|
"pattern": "[a-zA-Z0-9_]{1,32}",
|
|
"example": "my_ID"
|
|
},
|
|
"EntityIdList": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EntityId"
|
|
}
|
|
},
|
|
"LocalDateTime": {
|
|
"type": "string",
|
|
"pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}[\\+\\-][0-9]{4}",
|
|
"example": "2021-12-31 20:18:11.930+0100"
|
|
},
|
|
"UtcDateTime": {
|
|
"type": "string",
|
|
"pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z",
|
|
"example": "2021-12-31 19:18:11.930000+00:00"
|
|
},
|
|
"AppInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"appVersion": {
|
|
"type": "string",
|
|
"description": "Trilium 버전",
|
|
"example": "0.50.2"
|
|
},
|
|
"dbVersion": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"description": "데이터베이스 버전",
|
|
"example": 194
|
|
},
|
|
"syncVersion": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"description": "동기화 프로토콜 버전",
|
|
"example": 25
|
|
},
|
|
"buildDate": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "빌드 날짜",
|
|
"example": "2022-02-09 22:52:36+01:00"
|
|
},
|
|
"buildRevision": {
|
|
"type": "string",
|
|
"description": "빌드에 사용한 Git 커밋",
|
|
"example": "23daaa2387a0655685377f0a541d154aeec2aae8"
|
|
},
|
|
"dataDirectory": {
|
|
"type": "string",
|
|
"description": "Trilium 파일을 저장하는 데이터 디렉토리",
|
|
"example": "/home/user/data"
|
|
},
|
|
"clipperProtocolVersion": {
|
|
"type": "string",
|
|
"description": "지원하는 Trilium 웹 클리퍼 프로토콜 버전",
|
|
"example": 1
|
|
},
|
|
"utcDateTime": {
|
|
"type": "string",
|
|
"description": "현재 UTC 날짜와 시각",
|
|
"example": "2022-03-07 21:54:25.277000+00:00"
|
|
}
|
|
}
|
|
},
|
|
"Error": {
|
|
"type": "object",
|
|
"required": [
|
|
"status",
|
|
"code",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"description": "HTTP 응답에 사용한 것과 같은 HTTP 상태 코드",
|
|
"example": 400
|
|
},
|
|
"code": {
|
|
"type": "string",
|
|
"description": "고정된 문자열 상수",
|
|
"example": "NOTE_IS_PROTECTED"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"description": "사람이 읽을 수 있는 오류 설명. 추가 정보가 포함될 수 있습니다.",
|
|
"example": "노트 'evnnmvHTCgIn'은 보호되어 있어 ETAPI로 변경할 수 없습니다."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |