{"openapi":"3.0.3","info":{"title":"Memoda API","description":"개인 노트를 검색하고 생성·수정하는 API입니다. GPT Actions와 일반 REST 클라이언트에서 사용할 수 있습니다.","version":"0.1.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"NOTE_API_KEY 값"}},"schemas":{}},"paths":{"/health":{"get":{"operationId":"healthCheck","summary":"서버 상태 확인","tags":["System"],"security":[],"responses":{"200":{"description":"Default Response"}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","summary":"OpenAPI 문서","tags":["System"],"security":[],"responses":{"200":{"description":"Default Response"}}}},"/categories":{"get":{"operationId":"listCategories","summary":"카테고리 목록","tags":["Categories"],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"createCategory","summary":"카테고리 생성","tags":["Categories"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"카테고리 이름"},"icon":{"type":"string","description":"Lucide 아이콘 키"},"color":{"type":"string","description":"HEX 색상"},"sortOrder":{"type":"integer","description":"목록 정렬 순서"}},"required":["name"]}}}},"responses":{"200":{"description":"Default Response"}}}},"/categories/{id}":{"patch":{"operationId":"updateCategory","summary":"카테고리 수정","tags":["Categories"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"카테고리 이름"},"icon":{"type":"string","description":"Lucide 아이콘 키"},"color":{"type":"string","description":"HEX 색상"},"sortOrder":{"type":"integer","description":"목록 정렬 순서"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"deleteCategory","summary":"카테고리 삭제","tags":["Categories"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/notes":{"get":{"operationId":"searchNotes","summary":"메모 검색 및 목록","tags":["Notes"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"q","required":false,"description":"제목·본문·태그 검색어"},{"schema":{"type":"string","format":"uuid"},"in":"query","name":"categoryId","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"archived","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"pinned","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"trash","required":false}],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"createNote","summary":"메모 생성","tags":["Notes"],"description":"새 메모를 생성합니다.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","description":"메모 제목"},"contentMd":{"type":"string","description":"Markdown 형식의 본문"},"categoryId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"카테고리 ID"},"tags":{"type":"array","maxItems":20,"items":{"type":"string"}},"isPinned":{"type":"boolean"},"isArchived":{"type":"boolean"},"baseVersion":{"type":"integer","minimum":1,"description":"수정 충돌 확인용 현재 버전"}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/notes/{id}":{"get":{"operationId":"getNote","summary":"메모 상세 조회","tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"operationId":"updateNote","summary":"메모 수정","tags":["Notes"],"description":"먼저 메모를 조회하고 받은 version을 baseVersion으로 전달하세요. 버전이 다르면 409를 반환합니다.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","description":"메모 제목"},"contentMd":{"type":"string","description":"Markdown 형식의 본문"},"categoryId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"카테고리 ID"},"tags":{"type":"array","maxItems":20,"items":{"type":"string"}},"isPinned":{"type":"boolean"},"isArchived":{"type":"boolean"},"baseVersion":{"type":"integer","minimum":1,"description":"수정 충돌 확인용 현재 버전"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"trashNote","summary":"메모를 휴지통으로 이동","tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/notes/{id}/restore":{"post":{"operationId":"restoreNote","summary":"휴지통 메모 복원","tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/notes/{id}/revisions":{"get":{"operationId":"listNoteRevisions","summary":"메모 수정 이력","tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/tags":{"get":{"operationId":"listTags","summary":"태그 목록","tags":["Tags"],"responses":{"200":{"description":"Default Response"}}}},"/templates":{"get":{"operationId":"listTemplates","summary":"템플릿 목록","tags":["Templates"],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"createTemplate","summary":"템플릿 생성","tags":["Templates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"titlePattern":{"type":"string","description":"{{date}}, {{time}} 변수를 사용할 수 있습니다."},"contentMd":{"type":"string"}},"required":["name"]}}}},"responses":{"200":{"description":"Default Response"}}}},"/templates/{id}":{"patch":{"operationId":"updateTemplate","summary":"템플릿 수정","tags":["Templates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"titlePattern":{"type":"string","description":"{{date}}, {{time}} 변수를 사용할 수 있습니다."},"contentMd":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"deleteTemplate","summary":"템플릿 삭제","tags":["Templates"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/templates/{id}/instantiate":{"post":{"operationId":"createNoteFromTemplate","summary":"템플릿으로 새 메모 생성","tags":["Templates"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}}},"servers":[{"url":"https://memoda.app/api","description":"Memoda API"}],"security":[{"bearerAuth":[]}]}