사용자 인증 및 인가
사용자 로그인
HTTP request
POST /auth/login HTTP/1.1
Content-Type: application/json
Content-Length: 91
Host: localhost:8080
{
"authorizationCode" : "authorizationCode",
"state" : "state",
"provider" : "test"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
OAuth 인증 코드 |
|
|
|
true |
OAuth 상태값 |
|
|
|
true |
OAuth 제공자 (예: GOOGLE, NAVER, KAKAO) |
Response cookies
쿠키명 | 필수값 | 설명 |
---|---|---|
|
true |
액세스 토큰 |
|
true |
리프레시 토큰 |
사용자 로그아웃
HTTP request
POST /auth/logout HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Response cookies
쿠키명 | 필수값 | 설명 |
---|---|---|
|
true |
액세스 토큰 (삭제됨) |
|
true |
리프레시 토큰 (삭제됨) |
문서 API
문서 리스트 조회
HTTP request
GET /notes HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiZDUyYzhkYTMtYzY4NS00YjkyLWEyMmEtNDZlZWI4NDljYjdhIiwiZXhwIjoxNzQ2NTEzOTExfQ.6cNrV5Hw8DWfJWXDYWLVDmekZiRS4RguMK9wK6u1O-7KWEqHvYvj2JUPkhLC2crd
Host: localhost:8080
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
문서 목록 |
|
|
|
true |
문서 ID |
|
|
|
true |
문서 제목 |
|
|
|
true |
문서 아이콘 |
|
|
|
true |
하위 문서 목록 |
문서 생성
HTTP request
POST /notes HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiM2FlOWY0YzQtNWQ2Mi00YzM4LThhM2ItNTk3MGVhOTMyOWQ5IiwiZXhwIjoxNzQ2NTEzOTExfQ.MMmxIcSsYG_0prVwfKqvS8CbgY9LKoVHDrzZfQmrsfvRPBHRHErkULcTCzShuBdy
Content-Length: 57
Host: localhost:8080
{
"parentId" : "7865b717-7104-4041-8c76-2996cc94e56f"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
부모 문서 ID |
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
생성된 문서 ID |
문서 삭제
HTTP request
DELETE /notes/d8793134-94ed-4ae5-b8d0-5dc25c23ec1e HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiYmJlZDA1NWEtMjhiNC00ZmRiLWE5ZmYtZmZkMjJkZGE1YjA4IiwiZXhwIjoxNzQ2NTEzOTExfQ.KTx1X_hRq4L7QFveaOoCvg73ysyJexjzLdybbviEkagFT5NeecLPCs9MyYU4ewC7
Host: localhost:8080
문서 상세 조회
HTTP request
GET /notes/468cf2ea-642b-4d8b-b6d4-b40bafa3aeb4 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiYjM3M2E1YjktMmRlOS00ZjJmLWFmZDktZmFkYjJmN2ViYTZhIiwiZXhwIjoxNzQ2NTEzOTExfQ.oAzxyG_g7aXLBVYnCiF-QZIhzxFsBxyoWZfAcleKrx3vZBBvvva7ooPRs1piwJIF
Host: localhost:8080
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
문서 제목 |
|
|
|
true |
문서 아이콘 |
|
|
|
true |
문서 태그 목록 |
|
|
|
true |
문서 태그 색상 |
|
|
|
true |
문서 커버 이미지 |
문서 부분 수정
HTTP request
PATCH /notes/25a4db5b-9969-41d6-b024-acc095ee60a6/title HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiNTQ0NjVmMmEtODM5Mi00YjNkLWI3YzgtYjdkNzIzZDljM2RiIiwiZXhwIjoxNzQ2NTEzOTExfQ.TXPPyzjf48ZRVtJt9HdJgWmubEArHOpheveJrmsPHBMEtTb_pmN0vWMyMfssRCFD
Content-Length: 23
Host: localhost:8080
{
"value" : "value"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
수정할 값 |
문서 태그 수정
HTTP request
PATCH /notes/ac346de3-ff63-4044-8913-5eeb06ae2b10/tags HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiMjBlMWM4N2ItYmRjMC00NzJiLTlhODctZjk0ZjM1NmJmM2YwIiwiZXhwIjoxNzQ2NTEzOTExfQ.ZGArOfiyLdKRgBG6x9jKOnYpnHLDSUlPhZsoGPO2OX0EGqeZLo6zzM9Tb3NSzfFL
Content-Length: 121
Host: localhost:8080
{
"tags" : [ {
"name" : "tag",
"color" : "line_one"
}, {
"name" : "tag",
"color" : "line_two"
} ]
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
태그 이름 |
|
|
|
true |
태그 색상 |
블록 API
블록 생성
HTTP request
POST /blocks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiYmFkMTQ0MWUtZDU3MS00NGU0LThkMjQtNGFlYmY4OTQ4ZjUyIiwiZXhwIjoxNzQ2NTEzOTExfQ.61ij1aM3mhFzJLnOVs5PC1ZxqANsyadQH4rzw_Hsr1XlMcASwTfzuOvWcnq8hD-M
Content-Length: 273
Host: localhost:8080
{
"noteId" : "72e0df48-044e-4c29-90c5-7dec7cbfe2c1",
"type" : "DEFAULT",
"upperOrder" : 1,
"nodes" : [ {
"content" : "content1",
"style" : {
"key" : "value1"
}
}, {
"content" : "content2",
"style" : {
"key" : "value2"
}
} ]
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
문서 ID |
|
|
|
true |
블록 타입 |
|
|
|
true |
블록 순서 |
|
|
|
true |
노드 리스트 |
|
|
|
true |
노드 내용 |
|
|
|
true |
노드 스타일 |
|
|
|
true |
스타일 키 |
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
생성된 블록 ID |
블록 리스트 조회
HTTP request
GET /blocks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiNTlmOGQ3NjEtYjY2OC00MjVmLTgyZDctOTdmMWIwZTA4YjVkIiwiZXhwIjoxNzQ2NTEzOTExfQ.qC2q4UgA9gUVj-ak0PLUGmEXeFMXYj8Q7JZRlVxwHSakuO5KZreu2sJR9hLIdgZq
Content-Length: 55
Host: localhost:8080
{
"noteId" : "cd9b1b14-9a1c-49cf-a993-b20ae410940e"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
문서 ID |
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
Block 리스트 |
|
|
|
true |
블록 ID |
|
|
|
true |
블록 타입 |
|
|
|
true |
블록 순서 |
|
|
|
true |
문서 ID |
|
|
|
true |
회원 ID |
|
|
|
true |
블록 노드 리스트 |
|
|
|
true |
노드 내용 |
|
|
|
true |
노드 스타일 |
|
|
|
true |
스타일 키 |
블록 노드 변경
HTTP request
PATCH /blocks/009aba54-c597-43fa-adb7-ef698acf58fe/nodes HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiODQ5NjNkMmYtM2E2NS00NWQ3LWEwYzQtOTVjZTA0Y2I1ZTNlIiwiZXhwIjoxNzQ2NTEzOTExfQ.gjj6ZbdPCyAuPtN-qLFDb2S7lNc8pqvVWPxXkkoZorpc_8Ncp0jir6GNkcIsrlVd
Content-Length: 96
Host: localhost:8080
{
"nodes" : [ {
"content" : "content",
"style" : {
"key" : "value"
}
} ]
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
블록 노드 리스트 |
|
|
|
true |
노드 내용 |
|
|
|
true |
노드 스타일 |
|
|
|
true |
스타일 키 |
블록 순서 변경
HTTP request
PATCH /blocks/order HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiZTlhZmM4ZjYtYjMwZi00NjYyLTkzOTctNDFkMzkyZTJkMGY3IiwiZXhwIjoxNzQ2NTEzOTExfQ.AGrCzQlnUqJ6KUUOdiOefMBt7NexJJe6iaZYqdHuTf_uIDL5lG2CL_ReVDIV-rRk
Content-Length: 113
Host: localhost:8080
{
"noteId" : "565428a6-0733-495b-9699-286ffac0fbb4",
"startOrder" : 1,
"endOrder" : 2,
"upperOrder" : 3
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
문서 ID |
|
|
|
true |
시작 순서 |
|
|
|
true |
끝 순서 |
|
|
|
true |
상위 순서 |
블록 타입 변경
HTTP request
PATCH /blocks/f99f5020-b9f6-47b4-931c-43acb26061f8/type HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiYzk0OTAwMWQtZjhiYi00ODg4LWE4NjYtZTZhYjIyZGI0NjZiIiwiZXhwIjoxNzQ2NTEzOTExfQ.ZCb8jKTrau0cydQPjnVQBjyFmEeZc-Otf9xInLu-2nCywTuVKP_EuVz-yD65FIMP
Content-Length: 24
Host: localhost:8080
{
"type" : "DEFAULT"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
블록 타입 |
범위 기반 블록 삭제
HTTP request
DELETE /blocks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiNjhhMGIwZDgtNTQyNS00NmJlLWExOTktODRkOWM0OTAzMDcwIiwiZXhwIjoxNzQ2NTEzOTExfQ.M-lC5uQcIfH71pwBqhYv_REdYthSdL4u2b0O_Auj22E8fKNw4IoaFoVICmm9ywVl
Content-Length: 93
Host: localhost:8080
{
"noteId" : "6d63ac6f-9d49-48cb-895c-f50d9f125ee2",
"startOrder" : 1,
"endOrder" : 2
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
문서 ID |
|
|
|
true |
시작 순서 |
|
|
|
true |
끝 순서 |
노드 API
노드 생성
HTTP request
POST /nodes HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiZmRhNjgzZmItMTRjNC00MzcyLWE1MDgtZmY0NzRhMjIwNTcyIiwiZXhwIjoxNzQ2NTEzOTExfQ.AiNJLpPDeb8f1KOiDrFxTzA9toBPTo2dpDCArSBsfF6rwzp-2gCavrLqI5ZvKphG
Content-Length: 188
Host: localhost:8080
{
"blockId" : "e758cac4-326f-4669-aaf8-abf70d073dfb",
"noteId" : "b1583fc5-eb60-439d-beae-6d8eed6a8efa",
"content" : "content",
"order" : 1,
"style" : {
"key" : "value"
}
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
블록 ID |
|
|
|
true |
문서 ID |
|
|
|
true |
내용 |
|
|
|
true |
순서 |
|
|
|
true |
스타일 |
|
|
|
true |
스타일 키 |
노드 내용 수정
HTTP request
PATCH /nodes/5f4d9c74-986e-45bb-bd33-c831ebfe0cef/content HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiYjRmYmFkNDktOWQ2Ny00YTIxLTgzYmEtZGI3Njg3YzQ3MTUwIiwiZXhwIjoxNzQ2NTEzOTExfQ.4pLF2-RsIb6WoygynOgMoIP8EOLTAAbzTY0j2O0Ca_bh1LkczIVCAKHALIybam0X
Content-Length: 27
Host: localhost:8080
{
"content" : "content"
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
내용 |
노드 스타일 수정
HTTP request
PATCH /nodes/94244fe5-1789-4953-ad9f-decd938e538c/style HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJtZXRybyIsImlhdCI6MTc0NTkwOTExMSwic3ViIjoiNWNiNmMyMDktZmQ0Mi00ZDVkLTk4MjctYTE3YzgzNzY5MjhjIiwiZXhwIjoxNzQ2NTEzOTExfQ.kcQsqW4nJwmbHUYHoKKs7Bk26616NsDWuNQJyUZiD2Uqc_-Vwf7vErT-yJEcrI3n
Content-Length: 41
Host: localhost:8080
{
"style" : {
"key" : "value"
}
}
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
스타일 |
|
|
|
true |
스타일 키 |
에러 코드
Error code
코드 | 코드명 |
---|---|
|
토큰이 만료되었습니다. |
|
유효하지 않은 토큰입니다. |
|
권한이 없습니다. |
|
토큰이 없습니다. |
|
OAuth 토큰을 가져오는데 실패했습니다. |
|
OAuth 프로필을 가져오는데 실패했습니다. |
|
인자는 null일 수 없습니다. |
|
이메일 형식이 올바르지 않습니다. |
|
사용자를 찾을 수 없습니다. |
|
블록의 순서는 0보다 작을 수 없습니다. |
|
블록의 문서 ID는 필수입니다. |
|
블록의 ID는 필수입니다. |
|
스타일 정보를 변환하는데 실패했습니다. |
|
멤버 ID는 필수입니다. |
|
노드가 존재하지 않습니다. |
|
해당 권한이 없습니다. |
|
해당 노드을 문자열로 변경할 수 없습니다. |
|
해당 문자열을 노드로 변경할 수 없습니다. |
|
블록을 찾을 수 없습니다. |
|
해당 인자는 null일 수 없습니다 |
|
해당 문서를 찾을 수 없습니다 |
|
해당 문서에 대한 권한이 없습니다 |
|
해당 문서 필드 타입이 올바르지 않습니다 |
|
해당 태그 목록을 문자열로 변경할 수 없습니다 |
|
해당 문자열을 태그 목록으로 변경할 수 없습니다 |
|
요청 파라미터가 잘못되었습니다. |
|
요청이 너무 많습니다. |
|
지원하지 않는 미디어 타입입니다. |
|
서버 내부 오류가 발생했습니다. |