swagger:
index.html
User
| API 기능 |
메서드 |
URL |
요청 헤더 |
요청 바디 |
응답 예시 |
응답 실패 예시 |
비고 |
| 회원가입 |
POST |
/api/user/signup |
Content-Type: application/json |
json {"nickname": "string", "password": "string", "email": "string", "birthDate": "YYYY-MM-DD"} |
- 성공 (201 OK): - 응답 본문: json {"message": "회원가입 성공"} |
400 Bad Request: json {"error": "필수 필드 누락"} 409 Conflict: json {"error": "닉네임 또는 이메일 중복"} |
profile_color는 서버에서 10개의 색상 중 랜덤으로 지정되어 . 색상 코드 참조 백엔드 db에 저장. |
- role은 이후에 개발, 기본으로 guest로 저장 |
| 로그인 | POST |
/api/user/login | Content-Type: application/json | json {"email": "string", "password": "string"} | - 성공 (200 OK): - 응답 본문: json {"message": "로그인 성공", "data": { "nickname": "string", "email": "string", "birth_date": "YYYY-MM-DD", "profile_color": "string"}} Set-Cookie: token=<JWT 토큰>; HttpOnly; Secure; Path=/; | 401 Unauthorized: json {"error": "잘못된 이메일 또는 비밀번호"} | 로그인 시 프로필 정보를 함께 전달합니다. |
| 닉네임 수정 | PATCH | /api/user | Content-Type: application/json Authorization: Bearer <JWT 토큰> | json {"nickname": "string"} | - 성공 (200 OK): json {"message": "닉네임 수정 성공", "data": {"nickname": "string"}} | 400 Bad Request: json {"error": "필수 필드 누락"} 404 Not Found: json {"error": "유효하지 않은 user_id"} | 이메일 수정 불가, 닉네임 수정 가능 |
| 비밀번호 변경 | PATCH | /api/user/password | Content-Type: application/json Authorization: Bearer <JWT 토큰> | json {"current_password": "string", "new_password": "string"} | - 성공 (200 OK): json {"message": "비밀번호 변경 성공"} | 400 Bad Request: json {"error": "필수 필드 누락"} 401 Unauthorized: json {"error": "현재 비밀번호가 일치하지 않습니다"} | 현재 비밀번호가 일치하는 경우에만 새 비밀번호로 변경 가능 |
| 회원 탈퇴 | DELETE | /api/user | Authorization: Bearer <JWT 토큰> | json {"password": "string"} | - 성공 (200 OK): json {"message": "회원 탈퇴 성공"} | 400 Bad Request: json {"error": "필수 필드 누락"} 404 Not Found: json {"error": "유효하지 않은 user_id"} 401 Unauthorized: json {"error": "비밀번호가 일치하지 않습니다"} | 사용자의 모든 데이터가 삭제됩니다. |
- 프로필 컬러코드
수정사항
Stock API 명세서
| API 기능 |
메서드 |
URL |
요청 헤더 |
요청 파라미터 |
요청 바디 |
응답 예시 |
응답 실패 예시 |
비고 |
| 주식 정보 조회 |
GET |
/api/stock/{stock_id} |
없음 |
없음 |
없음 |
json {"market_cap": "int", "ticker": "string", "market_type": "string", "company_name": "string", "category": "string", "company_overview": "string"} |
404 Not Found: json {"error": "유효하지 않은 stock_id"} |
특정 주식 정보를 조회합니다. |
| 종목 검색 자동완성 |
GET |
/api/stock/search |
없음 |
keyword |
없음 |
json [{"id": "int", "ticker": "string", "company_name": "string"}] |
400 Bad Request: json {"error": "검색어를 입력해주세요"} |
keyword 쿼리 파라미터를 통해 ticker 또는 회사명으로 검색어를 입력 받아 자동완성 기능 제공. |
| 종목 정렬 조회 |
GET |
/api/stock/sort |
없음 |
sort_by, page |
없음 |
json [{"id": "int", "ticker": "string", "company_name": "string", "market_cap": "int", "volume": "int", "change_rate": "float"}] |
400 Bad Request: json {"error": "유효하지 않은 정렬 기준입니다"} |
정렬 기준과 페이지를 요청 파라미터로 받아 최대 10페이지, 페이지당 10개씩 표시. sort_by : market_cap, volume,change_rate_up, change_rate_down page :1~10 |
종목 정렬 조회는
stockprice 도메인에서 |
수정 사항
- 종목 검색 자동완성 api
- 거래대금 순, 등락율 순, 거래량 순 정렬 10개씩 페이징 처리 최대 10페이지
- 최근 본 종목 리스트 body에 stockId 리스트로 받아서 현재가 조회 API 추가
Announcement API 명세서
| API 기능 |
메서드 |
URL |
요청 헤더 |
요청 파라미터 |
요청 바디 |
응답 예시 |
응답 실패 예시 |
비고 |
| 특정 공시 요약 조회 |
GET |
/api/announcement/{announcement_id} |
없음 |
없음 |
없음 |
`json { |
|
|
| "message": "특정 공시 정보 조회 성공", |
|
|
|
|
|
|
|
|
| "data": { |
|
|
|
|
|
|
|
|
| "stockId": 9, |
|
|
|
|
|
|
|
|
| "title": "일괄신고추가서류)", |
|
|
|
|
|
|
|
|
| "content": "### 공시 내용 요약", |
|
|
|
|
|
|
|
|
| "announcementDate": "2024-11-20", |
|
|
|
|
|
|
|
|
| "submitter": "NH투자증권", |
|
|
|
|
|
|
|
|
| "announcementType": "기타공시", |
|
|
|
|
|
|
|
|
| "originalAnnouncementUrl": "https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20241120000094", |
|
|
|
|
|
|
|
|
| "totalVoteCount": 0, |
|
|
|
|
|
|
|
|
| "positiveVoteCount": 0, |
|
|
|
|
|
|
|
|
| "negativeVoteCount": 0, |
|
|
|
|
|
|
|
|
| "commentCount": 7 |
|
|
|
|
|
|
|
|
| } |
|
|
|
|
|
|
|
|
| }` |
404 Not Found: json {"error": "유효하지 않은 announcement_id"} |
특정 공시 정보를 조회합니다. |
|
|
|
|
|
|
| 전체 공시 목록 조회 |
GET |
/api/announcement |
없음 |
sort_by{최신순: "latest", 댓글 많은 순: "comment", 투표수: "vote"}, page |
없음 |
`json { |
|
|
| "message": "전체 공시 목록 조회 성공", |
|
|
|
|
|
|
|
|
| "data": { |
|
|
|
|
|
|
|
|
| "announcementCount": 3, |
|
|
|
|
|
|
|
|
| "announcementList": [ |
|
|
|
|
|
|
|
|
| { |
|
|
|
|
|
|
|
|
| "announcementId": 1, |
|
|
|
|
|
|
|
|
| "title": "일괄신고추가서류(파생결합사채-주가연계파생결합사채)", |
|
|
|
|
|
|
|
|
| "stockName": "NH투자증권", |
|
|
|
|
|
|
|
|
| "announcementDate": "2024-11-20", |
|
|
|
|
|
|
|
|
| "submitter": "NH투자증권", |
|
|
|
|
|
|
|
|
| "totalVoteCount": 0, |
|
|
|
|
|
|
|
|
| "positiveVoteCount": 0, |
|
|
|
|
|
|
|
|
| "negativeVoteCount": 0, |
|
|
|
|
|
|
|
|
| "commentCount": 7 |
|
|
|
|
|
|
|
|
| }, ... |
|
|
|
|
|
|
|
|
| ] |
|
|
|
|
|
|
|
|
| } |
|
|
|
|
|
|
|
|
| }` |
400 Bad Request: json {"error": "유효하지 않은 정렬 기준입니다"} |
전체 공시 목록을 정렬 및 페이징하여 조회합니다. 최신순, 댓글 많은 순, 투표 수 순으로 정렬합니다. |
|
|
|
|
|
|
| 특정 주식 공시 목록 조회 |
GET |
/api/announcement/stock/{stock_id} |
없음 |
sort_by{최신순: "latest", 댓글 많은 순: "comment", 투표수: "vote"}, page |
없음 |
`json { |
|
|
"message": "특정 주식 공시 목록 조회 성공",
"data": {
"announcementCount": 1,
"announcementList": [
{
"announcementId": 1,
"title": "일괄신고추가서류(파생결합사채-주가연계파생결합사채)",
"stockName": "NH투자증권",
"announcementDate": "2024-11-20",
"submitter": "NH투자증권",
"totalVoteCount": 0,
"positiveVoteCount": 0,
"negativeVoteCount": 0,
"commentCount": 7
}
]
}
}| **404 Not Found**:json {"error": "유효하지 않은 stock_id"}| 특정 주식에 대한 공시 목록을 페이징하여 조회합니다. | | 검색어 공시 목록 조회 | GET |/api/announcement/search| 없음 |keyword(default:"", page(deafault:0), size(deafault:10), "period"(default:"") : { 1m, 6m, 1y, 3y, yyyy-mm-dd~yyyy-mm-dd}, marketType(default:"") : { "KOSPI", "KOSDAQ"}, type(default:"") : {정기공시, 주요사항보고, 외부감사관련, 발행공시, 지분공시, 자산유동화, 거래소공시, 타공시, 공정위공시}| 없음 |json {
"message": "검색어 주식 공시 목록 조회 성공",
"data": {
"announcementCount": 1,
"announcementList": [
{
"announcementId": 1,
"title": "일괄신고추가서류(파생결합사채-주가연계파생결합사채)",
"stockName": "NH투자증권",
"announcementDate": "2024-11-20",
"submitter": "NH투자증권",
"totalVoteCount": 0,
"positiveVoteCount": 0,
"negativeVoteCount": 0,
"commentCount": 7
}
]
}
}` | | keyword 검색어에 대해 LIKE 문을 사용하여 announcement들 중 keword가 stockName에 포함되는 모든 공시를 페이지네이션 조회하는데 기본 size는 10이며, 이때 최신순, 투표수 순, 댓글 많은 순으로 정렬할 수 있으며, 또한 period로 최근 1달, 최근 6달, 최근 1년, 최근 3년 혹은 특정 날짜를 yyyy-mm-dd ~ yyyy-mm-dd 로 설정하여 검색할 수 있으며 공시에 연관된 stock의 마켓 타입도 설정할 수 있으며 기본값은 전부이다. 그리고 공시의 type으로도 검색 조건을 설정할 수 있다. |
수정 사항
- 공시 최신순, 조회수, 댓글순, 투표순으로 요청하는 api page랑 sort_by 요청 파라미터로 받아야 해
Comment API 명세서
| API 기능 |
메서드 |
URL |
요청 헤더 |
요청 파라미터 |
요청 바디 |
응답 예시 |
응답 실패 예시 |
비고 |
| 댓글 작성 |
POST |
/api/comments/{announcement_id} |
Content-Type: application/json Authorization: Bearer <JWT 토큰> |
없음 |
json {"content": "string"} |
- 성공 (201 OK): json {"message": "댓글 작성 성공"} |
400 Bad Request: json {"error": "필수 필드 누락"} |
특정 공시에 댓글을 작성합니다. |
| 댓글 수정 |
PATCH |
/api/comments/{comment_id} |
Content-Type: application/json Authorization: Bearer <JWT 토큰> |
없음 |
json {"content": "string"} |
- 성공 (200 OK): json {"message": "댓글 수정 성공"} |
404 Not Found: json {"error": "유효하지 않은 comment_id"} |
본인이 작성한 댓글을 수정할 수 있습니다. |
| 댓글 삭제 |
DELETE |
/api/comments/{comment_id} |
Authorization: Bearer <JWT 토큰> |
없음 |
없음 |
- 성공 (200 OK): json {"message": "댓글 삭제 성공"} |
404 Not Found: json {"error": "유효하지 않은 comment_id"} |
본인이 작성한 댓글을 삭제할 수 있습니다. |
| 특정 공시 댓글 목록 조회 |
GET |
/api/comments/announcement/{announcement_id} |
없음 |
page: 페이지 번호 (기본값: 0) size: 페이지당 댓글 수 (기본값: 3?) |
없음 |
json { "message" : "특정 공시 댓글 목록 조회 성공", "data" : [{"comment_id": "int", "content": "string", "created_at": "datetime", "username" : "string", "userProfileColor": "string"}]} |
404 Not Found: json {"error": "유효하지 않은 announcement_id"} |
특정 공시에 달린 댓글 목록을 조회합니다. page 파라미터를 통해 페이징합니다. |
| 종목 전체 공시 최신 댓글 조회 |
GET |
/api/comments/stock/{stock_id} |
없음 |
page: 페이지 번호 (기본값: 0) size: 페이지당 댓글 수 (기본값: 10) |
없음 |
json { "message" : "특정 종목 전체 공시 최신 댓글 목록 조회 성공", "data" : [{"comment_id": "int", "content": "string", "created_at": "datetime", "username" : "string", "userProfileColor": "string", "announcement_id" : "int", "announcementTitle" : "string"}]} |
404 Not Found: json {"error": "유효하지 않은 stock_id"} |
특정 종목의 모든 공시 중 최신 댓글 최대 10개를 조회합니다. |
| 내가 쓴 댓글 목록 조회 |
GET |
/api/comments/my |
Authorization: Bearer <JWT 토큰> |
page: 페이지 번호 (기본값: 0) size: 페이지당 댓글 수 (기본값: 3?) |
없음 |
json { "message" : "내 댓글 목록 조회 성공", "data" : [{"comment_id": "int", "content": "string", "created_at": "datetime", "announcement_id": "int", "stock_id": "int", "stockName": "string", "announcementTitle": "string"}]} |
401 Unauthorized: json {"error": "인증이 필요합니다"} |
로그인한 사용자가 작성한 댓글 목록을 조회합니다. |