-
Notifications
You must be signed in to change notification settings - Fork 3
Api 명세서 ‐ V1
Gyaak edited this page Oct 11, 2024
·
2 revisions
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/auth/login/kakao |
카카오 로그인 |
GET |
/api/auth/login/naver |
네이버 로그인 |
GET |
/api/auth/login/google |
구글 로그인 |
HTTP Method | API Endpoint | Description |
---|
[v2로 이관]
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/folders/ |
기본 폴더 정보 조회 |
GET |
/api/folders/parent/{folderId} |
특정 폴더에 속한 폴더 정보 조회 |
POST |
/api/folders/ |
폴더 생성 |
PUT |
/api/folders/{folderId} |
폴더 이름 변경 |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/folders/ |
기본 폴더 정보 조회 |
요청예시 | 응답예시 |
---|---|
{ "userId" : 현재 사용자 id ,"RECYCLE_BIN" : 휴지통 폴더 id ,"UNCLASSIFIED" : 미분류 폴더 id ,"ROOT" : 최상위 폴더 id } |
세부사항
- 사용자의 기본 폴더 id를 제공
- 모든 id는 숫자값임
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/folders/parent/{folderId} |
특정 폴더에 속한 폴더 정보 조회 |
요청예시 | 응답예시 |
---|---|
[ { "id" : 2, "name" : "폴더이름2", "parentFolderId" : 3, "userId" : 1 }, { "id" : 5, "name" : "폴더이름5", "parentFolderId" : 3, "userId" : 1 } ] |
HTTP Method | API Endpoint | Description |
---|---|---|
POST |
/api/folders/ |
폴더 생성 |
요청예시 | 응답예시 |
---|---|
{ "name" : "폴더이름" } |
{ "id" : 1, "name" : "폴더이름", "parentFolderId" : null, "userId" : 1 } |
세부사항
- 현재 생성된 폴더는 임시폴더이므로
PUT
/api/structures/folders
를 호출하여 적절한 폴더 밑으로 이동시킨후 사용 가능 - 폴더이름이 중복되면 예외발생
- 중복은 해당 사용자가 등록한 폴더명에서만 체크
HTTP Method | API Endpoint | Description |
---|---|---|
PUT |
/api/folders/{folderId} |
폴더 이름 변경 |
요청예시 | 응답예시 |
---|---|
{ "name" : "폴더이름" } |
세부사항
- 중복된 이름으로 변경시 예외 발생
- 중복은 해당 사용자가 등록한 폴더명에서만 체크
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/picks/{pickId} | 픽 상세 정보 조회 |
GET |
/api/picks | 본인 폴더 픽 리스트 조회 |
GET |
/api/picks?parentId=1 | 부모 폴더 픽 리스트 조회 |
GET |
/api/picks?folderType=UNCLASSIFIED | 미분류 폴더 픽 리스트 조회 |
POST |
/api/picks | 픽 생성(미분류 폴더로 생성), 이동하고 싶으면 이동 요청하기 |
PUT |
/api/picks | 픽(제목, 메모, 태그) 수정 |
DELETE |
/api/picks | 픽 삭제 |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/picks/{pickId} | 픽 상세 정보 조회 |
요청예시 | 응답예시 |
---|---|
{ "id": 2, "title": "제목", "memo": "메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 2, "tagName": "tag2", "tagOrder": 1, "colorNumber": 0, "userId": 1 }, { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 5, "tagName": "tag5", "tagOrder": 4, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 2, "url": "title", "imageUrl": null } } |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/picks | 본인 폴더 픽 리스트 조회 |
요청예시 | 응답예시 |
---|---|
[ { "id": 2, "title": "제목", "memo": "메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 2, "tagName": "tag2", "tagOrder": 1, "colorNumber": 0, "userId": 1 }, { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 5, "tagName": "tag5", "tagOrder": 4, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 2, "url": "title", "imageUrl": null } }, { "id": 3, "title": "string", "memo": "string", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 1, "url": "string", "imageUrl": "string" } } ] |
|
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/picks?parentId=1 | 부모 폴더 픽 리스트 조회 |
요청예시 | 응답예시 |
---|---|
[ { "id": 2, "title": "제목", "memo": "메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 2, "tagName": "tag2", "tagOrder": 1, "colorNumber": 0, "userId": 1 }, { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 5, "tagName": "tag5", "tagOrder": 4, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 2, "url": "title", "imageUrl": null } }, { "id": 3, "title": "string", "memo": "string", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 1, "url": "string", "imageUrl": "string" } } ] |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/picks?folderType=UNCLASSIFIED | 미분류 폴더 픽 리스트 조회 |
요청예시 | 응답예시 |
---|---|
[ { "id": 2, "title": "제목", "memo": "메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 2, "tagName": "tag2", "tagOrder": 1, "colorNumber": 0, "userId": 1 }, { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 5, "tagName": "tag5", "tagOrder": 4, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 2, "url": "title", "imageUrl": null } }, { "id": 3, "title": "string", "memo": "string", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 }, { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 1, "url": "string", "imageUrl": "string" } } ] |
HTTP Method | API Endpoint | Description |
---|---|---|
POST |
/api/picks | 픽 생성(미분류 폴더로 생성), 이동하고 싶으면 이동 요청하기 |
요청예시 | 응답예시 |
---|---|
{ "memo": "메모", "title": "제목", "tagIdList": [ 3, 1, 2 ], "linkRequest": { "url": "/url", "title": "링크 제목", "description": "링크 설명", "imageUrl": "/imageUrl" } } |
{ "id": 4, "title": "제목", "memo": "메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 2, "tagName": "tag2", "tagOrder": 1, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 3, "url": "링크 제목", "imageUrl": null } } |
세부 사항
- 응답은 우선 모든 정보를 담아두었음.
- 클라이언트 측에서 생성되었을 때 데이터가 필요없다고 판단되는 경우 응답은 제거할 수 있음.
HTTP Method | API Endpoint | Description |
---|---|---|
PUT |
/api/picks | 픽(제목, 메모, 태그) 수정 |
요청예시 | 응답예시 |
---|---|
{ "id": 2, "title": "제목제목", "memo": "메모메모", "tagIdList": [ 1, 3, 4 ] } |
{ "id": 2, "title": "제목제목", "memo": "메모메모", "folderId": 1, "userId": 1, "tagList": [ { "tagId": 1, "tagName": "tag1", "tagOrder": 0, "colorNumber": 0, "userId": 1 }, { "tagId": 3, "tagName": "tag3", "tagOrder": 2, "colorNumber": 0, "userId": 1 }, { "tagId": 4, "tagName": "tag4", "tagOrder": 3, "colorNumber": 0, "userId": 1 } ], "linkUrlResponse": { "id": 2, "url": "title", "imageUrl": null } } |
세부 사항
- 응답은 우선 모든 정보를 담아두었음.
- 클라이언트 측에서 생성되었을 때 데이터가 필요없다고 판단되는 경우 응답은 제거할 수 있음.
HTTP Method | API Endpoint | Description |
---|---|---|
DELETE |
/api/picks | 픽 삭제 |
요청예시 | 응답예시 |
---|---|
{ "id": 2 } |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/structures/ |
사용자 폴더구조 조회 |
PUT |
/api/structures/folders/{folderId} |
폴더 이동 |
PUT |
/api/structures/picks/{pickId} |
픽 이동 |
DELETE |
/api/structures/folders/{folderId} |
폴더 삭제 |
DELETE |
/api/structures/picks/{pickId} |
픽 삭제 |
HTTP Method | API Endpoint | Description |
---|---|---|
GET |
/api/structures/ |
사용자 폴더구조 조회 |
요청예시 | 응답예시 |
---|---|
{ "root": [ { "id": "1", "type": "folder" "folderId": 1, "name": "Favorites", "children": [] }, { "id": "2", "type": "folder", "folderId": 5, "name": "Frontend", "children": [ { "id": "3", "type": "pick", "pickId": 3, "name": "React Hooks" } ] } ], "recycleBin": [] } |
세부사항
-
id
는 클라이언트에서 사용하는id
값, 서버에서는folderId
,pickId
만 사용 - type : folder|pick
- 사용자의 폴더 구조를 제공
- 최소 회원가입시 다음과 같은 기본 폴더구조를 반환
{
"root": [],
"recycleBin": []
}
HTTP Method | API Endpoint | Description |
---|---|---|
PUT |
/api/structures/folders/{folderId} |
폴더 이동 |
요청예시 | 응답예시 |
---|---|
{ "parentFolderId": 이동 목적지 폴더 id ,"structure": { "root": [ { "id": 2, "type": "folder", "folderId": 7, "name": "폴더 이름", "children": [] } ], "recycleBin": [] } } |
세부사항
-
structure
의 경우 폴더를 이동한 후의 폴더구조 를 json트리 형태로 보내줘야함
HTTP Method | API Endpoint | Description |
---|---|---|
PUT |
/api/structures/picks/{pickId} |
픽 이동 |
요청예시 | 응답예시 |
---|---|
{ "parentFolderId": 이동 목적지 폴더 id ,"structure": { "root": [ { "id": 2, "type": "pick", "pickId": 7, "name": "픽 이름" } ], "recycleBin": [] } } |
세부사항
-
structure
의 경우 픽을 이동한 후의 폴더구조 를 json트리 형태로 보내줘야함
HTTP Method | API Endpoint | Description |
---|---|---|
DELETE |
/api/structures/folders/{folderId} |
폴더 삭제 |
요청예시 | 응답예시 |
---|---|
{ "structure": { "root": [ { "id": 2, "type": "folder", "folderId": 7, "name": "폴더 이름", "children": [] } ], "recycleBin": [] } } |
세부사항
-
structure
의 경우 폴더를 삭제한 후의 폴더구조 를 json트리 형태로 보내줘야함
HTTP Method | API Endpoint | Description |
---|---|---|
DELETE |
/api/structures/picks/{pickId} |
픽 삭제 |
요청예시 | 응답예시 |
---|---|
{ "structure": { "root": [ { "id": 2, "type": "pick", "pickId": 7, "name": "픽 이름" } ], "recycleBin": [] } } |
세부사항
-
structure
의 경우 픽을 삭제한 후의 폴더구조 를 json트리 형태로 보내줘야함
Notion 링크 각 팀원 링크 등 삽입 예정