-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi_schema.json
More file actions
1 lines (1 loc) · 31.5 KB
/
api_schema.json
File metadata and controls
1 lines (1 loc) · 31.5 KB
1
{"openapi":"3.1.0","info":{"title":"Coing API","version":"v0"},"servers":[{"url":"http://localhost:8080","description":"Generated server url"}],"tags":[{"name":"BookMark API","description":"북마크 관련 API 엔드포인트"},{"name":"Admin API","description":"관리자 관련 API 엔드포인트"},{"name":"Candle API","description":"캔들 차트 관련 API 엔드포인트"},{"name":"ChatReport API","description":"채팅 신고 관련 API 엔드포인트"},{"name":"Chat API","description":"채팅 관련 API 엔드포인트"},{"name":"Trade API","description":"체결 조회 관련 API 엔드포인트"},{"name":"Market API","description":"종목 조회 관련 API 엔드포인트"},{"name":"User API","description":"회원 관련 API 엔드포인트"},{"name":"Ticker API","description":"현재가 조회 관련 API 엔드포인트"},{"name":"Push API","description":"Push 알림 API 엔드포인트"},{"name":"News API","description":"뉴스 관련 API 엔드포인트"}],"paths":{"/api/ticker":{"post":{"tags":["Ticker API"],"summary":"여러 마켓 현재가 조회","operationId":"getTickers","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TickersRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/TickersResponse"}}}}}}},"/api/push/test":{"post":{"tags":["Push API"],"operationId":"test","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushMessage"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/push/subscribe":{"post":{"tags":["Push API"],"operationId":"updateSubscription","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"OK"},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}},"MARKET_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"해당 코인 정보를 찾을 수 없습니다.","detail":""}}}}}}}}},"/api/push/register":{"post":{"tags":["Push API"],"operationId":"subscribe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushTokenSaveRequest"}}},"required":true},"responses":{"200":{"description":"OK"},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/market/refresh":{"post":{"tags":["Market API"],"summary":"새로고침 요청","operationId":"refreshMarkets","responses":{"200":{"description":"OK"}}}},"/api/chat/messages/{messageId}/report":{"post":{"tags":["ChatReport API"],"summary":"메세지 신고하기","operationId":"reportMessage","parameters":[{"name":"messageId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}},"404":{"content":{"application/json":{"examples":{"MESSAGE_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"message.not.found","detail":""}},"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"409":{"content":{"application/json":{"examples":{"MESSAGE_ALREADY_REPORTED":{"value":{"status":"409 CONFLICT","message":"message.already.reported","detail":""}}}}}},"400":{"content":{"application/json":{"examples":{"MESSAGE_REPORT_FAILED":{"value":{"status":"400 BAD_REQUEST","message":"message.report.failed","detail":""}}}}}},"500":{"content":{"application/json":{"examples":{"INTERNAL_SERVER_ERROR":{"value":{"status":"500 INTERNAL_SERVER_ERROR","message":"서버 내부 오류입니다.","detail":""}}}}}}}}},"/api/bookmark":{"post":{"tags":["BookMark API"],"summary":"북마크 등록","operationId":"addBookmark","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmarkRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}},"404":{"content":{"application/json":{"examples":{"BOOKMARK_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"북마크 정보가 없습니다.","detail":""}},"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"400":{"content":{"application/json":{"examples":{"BOOKMARK_ALREADY_EXISTS":{"value":{"status":"400 BAD_REQUEST","message":"이미 북마크된 항목입니다.","detail":""}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/auth/social-login/redirect":{"post":{"tags":["User API"],"summary":"소셜 로그인 후 토큰 발급","operationId":"redirectSocialLogin","parameters":[{"name":"tempToken","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"403":{"content":{"application/json":{"examples":{"EMPTY_TOKEN_PROVIDED":{"value":{"status":"403 FORBIDDEN","message":"인증 토큰이 제공되지 않았습니다.","detail":""}}}}}}}}},"/api/auth/social-login/redirect/quit":{"post":{"tags":["User API"],"summary":"소셜 로그인 후 탈퇴 처리","operationId":"redirectSocialQuit","parameters":[{"name":"quitToken","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"403":{"content":{"application/json":{"examples":{"EMPTY_TOKEN_PROVIDED":{"value":{"status":"403 FORBIDDEN","message":"인증 토큰이 제공되지 않았습니다.","detail":""}}}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/auth/signup":{"post":{"tags":["User API"],"summary":"일반 유저 회원 가입","operationId":"signUp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSignUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/UserSignupResponse"}}}},"400":{"content":{"application/json":{"examples":{"MAIL_SEND_FAIL":{"value":{"status":"400 BAD_REQUEST","message":"메일 전송에 실패했습니다.","detail":""}},"ALREADY_REGISTERED_EMAIL":{"value":{"status":"400 BAD_REQUEST","message":"이미 등록된 이메일입니다.","detail":""}},"INVALID_PASSWORD_CONFIRM":{"value":{"status":"400 BAD_REQUEST","message":"비밀번호가 일치하지 않습니다.","detail":""}}}}}}}}},"/api/auth/resend-email":{"post":{"tags":["User API"],"summary":"이메일 인증 메일 재전송","operationId":"resendEmail","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"400":{"content":{"application/json":{"examples":{"MAIL_SEND_FAIL":{"value":{"status":"400 BAD_REQUEST","message":"메일 전송에 실패했습니다.","detail":""}}}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/auth/refresh":{"post":{"tags":["User API"],"summary":"토큰 재발급","operationId":"refreshToken","responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"403":{"content":{"application/json":{"examples":{"INVALID_REFRESH_TOKEN":{"value":{"status":"403 FORBIDDEN","message":"유효하지 않은 리프레시 토큰입니다.","detail":""}},"REFRESH_TOKEN_REQUIRED":{"value":{"status":"403 FORBIDDEN","message":"리프레시 토큰이 제공되지 않았습니다.","detail":""}}}}}}}}},"/api/auth/password-reset/request":{"post":{"tags":["User API"],"summary":"비밀번호 재설정 요청","operationId":"requestPasswordReset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"400":{"content":{"application/json":{"examples":{"MAIL_SEND_FAIL":{"value":{"status":"400 BAD_REQUEST","message":"메일 전송에 실패했습니다.","detail":""}}}}}}}}},"/api/auth/password-reset/confirm":{"post":{"tags":["User API"],"summary":"비밀번호 재설정 확인","operationId":"confirmPasswordReset","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirmRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/auth/logout":{"post":{"tags":["User API"],"summary":"회원 로그아웃","operationId":"logout","responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}}}}},"/api/auth/login":{"post":{"tags":["User API"],"summary":"일반 유저 로그인","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLoginRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}},"401":{"content":{"application/json":{"examples":{"EMAIL_NOT_VERIFIED":{"value":{"status":"401 UNAUTHORIZED","message":"이메일 인증이 완료되지 않았습니다.","detail":""}}}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"400":{"content":{"application/json":{"examples":{"PASSWORD_MISMATCH":{"value":{"status":"400 BAD_REQUEST","message":"비밀번호가 일치하지 않습니다.","detail":""}}}}}}}}},"/api/trade/{market}":{"get":{"tags":["Trade API"],"summary":"특정 마켓 체결 내역 조회","operationId":"getTrades","parameters":[{"name":"market","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/TradeResponse"}}}},"404":{"content":{"application/json":{"examples":{"TRADE_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"체결 정보가 없습니다.","detail":""}}}}}}}}},"/api/ticker/{market}":{"get":{"tags":["Ticker API"],"summary":"특정 마켓 현재가 조회","operationId":"getTicker","parameters":[{"name":"market","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/TickerResponse"}}}},"404":{"content":{"application/json":{"examples":{"TICKER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"현재가 정보가 없습니다.","detail":""}}}}}}}}},"/api/push/subscribe-info":{"get":{"tags":["Push API"],"operationId":"getSubscribeInfo","parameters":[{"name":"market","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/SubscribeInfo"}}}}}}},"/api/news":{"get":{"tags":["News API"],"summary":"마켓 코드로 뉴스 조회 (검색어는 해당 마켓의 한국 이름 사용)","operationId":"searchNews","parameters":[{"name":"market","in":"query","required":true,"schema":{"type":"string"}},{"name":"display","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":100}},{"name":"start","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"sim"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"string"}}}}}}},"/api/market":{"get":{"tags":["Market API"],"summary":"기준 통화별 마켓 전체 조회","operationId":"getMarketsByQuote","parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":10,"minimum":1}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","default":["code,ASC"],"items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/PagedResponseMarketResponse"}}}}}}},"/api/market/{code}":{"get":{"tags":["Market API"],"summary":"북마크한 특정 마켓 정보 조회","operationId":"getMarketByUserAndCode","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/MarketResponse"}}}}}}},"/api/chat/rooms/{marketCode}/messages":{"get":{"tags":["Chat API"],"summary":"채팅방 메세지 목록 조회 - 최근 10분","operationId":"getMessagesByMarket","parameters":[{"name":"marketCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageDto"}}}}},"404":{"content":{"application/json":{"examples":{"MARKET_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"해당 코인 정보를 찾을 수 없습니다.","detail":""}},"CHAT_ROOM_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"chat.room.not.found","detail":""}}}}}},"500":{"content":{"application/json":{"examples":{"INTERNAL_SERVER_ERROR":{"value":{"status":"500 INTERNAL_SERVER_ERROR","message":"서버 내부 오류입니다.","detail":""}}}}}}}}},"/api/candles/{market}/{type}":{"get":{"tags":["Candle API"],"operationId":"getCandles","parameters":[{"name":"market","in":"path","required":true,"schema":{"type":"string"}},{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["seconds","minutes","days","weeks","months","years"]}},{"name":"unit","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandleResponse"}}}}}}}},"/api/bookmarks/{quote}":{"get":{"tags":["BookMark API"],"summary":"유저 북마크 조회","operationId":"getBookmarksByQuote","parameters":[{"name":"quote","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":9,"minimum":1}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/PagedResponseBookmarkResponse"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/auth/verify-email":{"get":{"tags":["User API"],"summary":"이메일 인증","operationId":"verifyEmail","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/auth/is-verified":{"get":{"tags":["User API"],"summary":"이메일 인증 상태 확인","description":"회원가입을 요청한 사용자의 UUID(userId)를 기준으로 이메일 인증 여부를 확인합니다.","operationId":"isVerified","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/EmailVerificationResponse"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}}}}},"/api/auth/info":{"get":{"tags":["User API"],"summary":"회원 정보 조회","operationId":"getUserInfo","responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"403":{"content":{"application/json":{"examples":{"EMPTY_TOKEN_PROVIDED":{"value":{"status":"403 FORBIDDEN","message":"인증 토큰이 제공되지 않았습니다.","detail":""}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/admin/reported-messages":{"get":{"tags":["Admin API"],"summary":"신고된 메시지 조회","description":"신고된 메시지를 조회합니다.","operationId":"getReportedMessages","responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReportDto"}}}}},"404":{"content":{"application/json":{"examples":{"REPORT_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"report.not.found","detail":""}}}}}},"401":{"content":{"application/json":{"examples":{"INVALID_TOKEN":{"value":{"status":"401 UNAUTHORIZED","message":"유효하지 않은 토큰입니다.","detail":""}},"TOKEN_REQUIRED":{"value":{"status":"401 UNAUTHORIZED","message":"인증 토큰이 제공되지 않았습니다.","detail":""}}}}}},"500":{"content":{"application/json":{"examples":{"INTERNAL_SERVER_ERROR":{"value":{"status":"500 INTERNAL_SERVER_ERROR","message":"서버 내부 오류입니다.","detail":""}}}}}}}}},"/api/admin/auth-check":{"get":{"tags":["Admin API"],"summary":"관리자 권한 확인","description":"현재 로그인한 사용자가 관리자 권한을 가지고 있는지 확인합니다.","operationId":"checkAdminAuthority","responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/bookmark/{marketCode}":{"delete":{"tags":["BookMark API"],"summary":"특정 북마크 삭제","operationId":"deleteBookmark","parameters":[{"name":"marketCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"$ref":"#/components/schemas/BasicResponse"}}}},"403":{"content":{"application/json":{"examples":{"BOOKMARK_ACCESS_DENIED":{"value":{"status":"403 FORBIDDEN","message":"북마크 접근 권한이 없습니다.","detail":""}}}}}},"404":{"content":{"application/json":{"examples":{"BOOKMARK_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"북마크 정보가 없습니다.","detail":""}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/auth/signout":{"delete":{"tags":["User API"],"summary":"회원 탈퇴","operationId":"signOut","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignOutRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json;charset=UTF-8":{"schema":{"type":"object"}}}},"404":{"content":{"application/json":{"examples":{"MEMBER_NOT_FOUND":{"value":{"status":"404 NOT_FOUND","message":"회원 정보가 없습니다.","detail":""}}}}}},"403":{"content":{"application/json":{"examples":{"EMPTY_TOKEN_PROVIDED":{"value":{"status":"403 FORBIDDEN","message":"인증 토큰이 제공되지 않았습니다.","detail":""}}}}}},"400":{"content":{"application/json":{"examples":{"PASSWORD_MISMATCH":{"value":{"status":"400 BAD_REQUEST","message":"비밀번호가 일치하지 않습니다.","detail":""}}}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"TickersRequest":{"type":"object","properties":{"markets":{"type":"array","items":{"type":"string"}}},"required":["markets"]},"LocalTime":{"type":"object","properties":{"hour":{"type":"integer","format":"int32"},"minute":{"type":"integer","format":"int32"},"second":{"type":"integer","format":"int32"},"nano":{"type":"integer","format":"int32"}}},"TickerDto":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"koreanName":{"type":"string"},"englishName":{"type":"string"},"openingPrice":{"type":"number","format":"double"},"highPrice":{"type":"number","format":"double"},"lowPrice":{"type":"number","format":"double"},"tradePrice":{"type":"number","format":"double"},"prevClosingPrice":{"type":"number","format":"double"},"change":{"type":"string","enum":["RISE","EVEN","FALL"]},"changePrice":{"type":"number","format":"double"},"signedChangePrice":{"type":"number","format":"double"},"changeRate":{"type":"number","format":"double"},"signedChangeRate":{"type":"number","format":"double"},"tradeVolume":{"type":"number","format":"double"},"accTradeVolume":{"type":"number","format":"double"},"accTradeVolume24h":{"type":"number","format":"double"},"accTradePrice":{"type":"number","format":"double"},"accTradePrice24h":{"type":"number","format":"double"},"tradeDate":{"type":"string","format":"date"},"tradeTime":{"$ref":"#/components/schemas/LocalTime"},"tradeTimestamp":{"type":"integer","format":"int64"},"askBid":{"type":"string","enum":["ASK","BID"]},"accAskVolume":{"type":"number","format":"double"},"accBidVolume":{"type":"number","format":"double"},"highest52WeekPrice":{"type":"number","format":"double"},"highest52WeekDate":{"type":"string","format":"date"},"lowest52WeekPrice":{"type":"number","format":"double"},"lowest52WeekDate":{"type":"string","format":"date"},"marketState":{"type":"string","enum":["PREVIEW","ACTIVE","DELISTED","PREDELISTING"]},"marketWarning":{"type":"string","enum":["NONE","CAUTION"]},"timestamp":{"type":"integer","format":"int64"},"accAskBidRate":{"type":"number","format":"double"},"highBreakout":{"type":"boolean"},"lowBreakout":{"type":"boolean"},"oneMinuteRate":{"type":"number","format":"double"},"isFallback":{"type":"boolean"},"lastUpdate":{"type":"string"},"fallback":{"type":"boolean","writeOnly":true}},"required":["accAskBidRate","accAskVolume","accBidVolume","accTradePrice","accTradePrice24h","accTradeVolume","accTradeVolume24h","askBid","change","changePrice","changeRate","code","englishName","highBreakout","highPrice","highest52WeekDate","highest52WeekPrice","isFallback","koreanName","lowBreakout","lowPrice","lowest52WeekDate","lowest52WeekPrice","marketState","marketWarning","oneMinuteRate","openingPrice","prevClosingPrice","signedChangePrice","signedChangeRate","timestamp","tradeDate","tradePrice","tradeTime","tradeTimestamp","tradeVolume","type"]},"TickersResponse":{"type":"object","properties":{"tickers":{"type":"array","items":{"$ref":"#/components/schemas/TickerDto"}}},"required":["tickers"]},"PushMessage":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["body","title"]},"SubscribeInfo":{"type":"object","properties":{"oneMinuteRate":{"type":"string","enum":["NONE","ONE","THREE","FIVE","TEN"]},"tradeImpact":{"type":"string","enum":["NONE","SLIGHT","MEDIUM","STRONG"]}},"required":["oneMinuteRate","tradeImpact"]},"SubscribeRequest":{"type":"object","properties":{"market":{"type":"string"},"subscribeInfo":{"$ref":"#/components/schemas/SubscribeInfo"},"unsubscribeInfo":{"$ref":"#/components/schemas/SubscribeInfo"}},"required":["market","subscribeInfo","unsubscribeInfo"]},"PushTokenSaveRequest":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"BasicResponse":{"type":"object","properties":{"status":{"type":"string","enum":["100 CONTINUE","101 SWITCHING_PROTOCOLS","102 PROCESSING","103 EARLY_HINTS","103 CHECKPOINT","200 OK","201 CREATED","202 ACCEPTED","203 NON_AUTHORITATIVE_INFORMATION","204 NO_CONTENT","205 RESET_CONTENT","206 PARTIAL_CONTENT","207 MULTI_STATUS","208 ALREADY_REPORTED","226 IM_USED","300 MULTIPLE_CHOICES","301 MOVED_PERMANENTLY","302 FOUND","302 MOVED_TEMPORARILY","303 SEE_OTHER","304 NOT_MODIFIED","305 USE_PROXY","307 TEMPORARY_REDIRECT","308 PERMANENT_REDIRECT","400 BAD_REQUEST","401 UNAUTHORIZED","402 PAYMENT_REQUIRED","403 FORBIDDEN","404 NOT_FOUND","405 METHOD_NOT_ALLOWED","406 NOT_ACCEPTABLE","407 PROXY_AUTHENTICATION_REQUIRED","408 REQUEST_TIMEOUT","409 CONFLICT","410 GONE","411 LENGTH_REQUIRED","412 PRECONDITION_FAILED","413 PAYLOAD_TOO_LARGE","413 REQUEST_ENTITY_TOO_LARGE","414 URI_TOO_LONG","414 REQUEST_URI_TOO_LONG","415 UNSUPPORTED_MEDIA_TYPE","416 REQUESTED_RANGE_NOT_SATISFIABLE","417 EXPECTATION_FAILED","418 I_AM_A_TEAPOT","419 INSUFFICIENT_SPACE_ON_RESOURCE","420 METHOD_FAILURE","421 DESTINATION_LOCKED","422 UNPROCESSABLE_ENTITY","423 LOCKED","424 FAILED_DEPENDENCY","425 TOO_EARLY","426 UPGRADE_REQUIRED","428 PRECONDITION_REQUIRED","429 TOO_MANY_REQUESTS","431 REQUEST_HEADER_FIELDS_TOO_LARGE","451 UNAVAILABLE_FOR_LEGAL_REASONS","500 INTERNAL_SERVER_ERROR","501 NOT_IMPLEMENTED","502 BAD_GATEWAY","503 SERVICE_UNAVAILABLE","504 GATEWAY_TIMEOUT","505 HTTP_VERSION_NOT_SUPPORTED","506 VARIANT_ALSO_NEGOTIATES","507 INSUFFICIENT_STORAGE","508 LOOP_DETECTED","509 BANDWIDTH_LIMIT_EXCEEDED","510 NOT_EXTENDED","511 NETWORK_AUTHENTICATION_REQUIRED"]},"message":{"type":"string"},"detail":{"type":"string"}},"required":["detail","message","status"]},"BookmarkRequest":{"type":"object","properties":{"coinCode":{"type":"string"}},"required":["coinCode"]},"UserSignUpRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":20,"minLength":2},"email":{"type":"string"},"password":{"type":"string","maxLength":20,"minLength":8,"pattern":"^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]).{8,20}$"},"passwordConfirm":{"type":"string"}},"required":["email","name","password","passwordConfirm"]},"UserSignupResponse":{"type":"object","properties":{"message":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"userId":{"type":"string","format":"uuid"}},"required":["email","message","name","userId"]},"PasswordResetRequest":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]},"PasswordResetConfirmRequest":{"type":"object","properties":{"newPassword":{"type":"string"},"newPasswordConfirm":{"type":"string"}},"required":["newPassword","newPasswordConfirm"]},"UserLoginRequest":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"]},"TradeDto":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"tradePrice":{"type":"number","format":"double"},"tradeVolume":{"type":"number","format":"double"},"askBid":{"type":"string","enum":["ASK","BID"]},"prevClosingPrice":{"type":"number","format":"double"},"change":{"type":"string","enum":["RISE","EVEN","FALL"]},"changePrice":{"type":"number","format":"double"},"tradeDate":{"type":"string","format":"date"},"tradeTime":{"$ref":"#/components/schemas/LocalTime"},"tradeTimeStamp":{"type":"integer","format":"int64"},"timestamp":{"type":"integer","format":"int64"},"sequentialId":{"type":"integer","format":"int64"},"bestAskPrice":{"type":"number","format":"double"},"bestAskSize":{"type":"number","format":"double"},"bestBidPrice":{"type":"number","format":"double"},"bestBidSize":{"type":"number","format":"double"},"vwap":{"type":"number","format":"double"},"averageTradeSize":{"type":"number","format":"double"},"tradeImpact":{"type":"number","format":"double"},"isFallback":{"type":"boolean"},"lastUpdate":{"type":"string"},"fallback":{"type":"boolean","writeOnly":true}},"required":["askBid","averageTradeSize","bestAskPrice","bestAskSize","bestBidPrice","bestBidSize","change","changePrice","code","isFallback","prevClosingPrice","sequentialId","timestamp","tradeDate","tradeImpact","tradePrice","tradeTime","tradeTimeStamp","tradeVolume","type","vwap"]},"TradeResponse":{"type":"object","properties":{"trades":{"type":"array","items":{"$ref":"#/components/schemas/TradeDto"}}},"required":["trades"]},"TickerResponse":{"type":"object","properties":{"ticker":{"$ref":"#/components/schemas/TickerDto"}},"required":["ticker"]},"MarketResponse":{"type":"object","properties":{"code":{"type":"string"},"koreanName":{"type":"string"},"englishName":{"type":"string"},"isBookmarked":{"type":"boolean"}},"required":["code","englishName","isBookmarked","koreanName"]},"PagedResponseMarketResponse":{"type":"object","properties":{"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/MarketResponse"}}},"required":["content","page","size","totalElements","totalPages"]},"ChatMessageDto":{"type":"object","properties":{"id":{"type":"string"},"sender":{"type":"string"},"content":{"type":"string"},"timestamp":{"type":"string"}},"required":["content","sender","timestamp"]},"CandleResponse":{"type":"object","properties":{"market":{"type":"string"},"candleDateTimeUtc":{"type":"string"},"openingPrice":{"type":"number","format":"double"},"highPrice":{"type":"number","format":"double"},"lowPrice":{"type":"number","format":"double"},"tradePrice":{"type":"number","format":"double"},"candleAccTradeVolume":{"type":"number","format":"double"},"timestamp":{"type":"integer","format":"int64"}},"required":["candleAccTradeVolume","candleDateTimeUtc","highPrice","lowPrice","market","openingPrice","timestamp","tradePrice"]},"BookmarkResponse":{"type":"object","properties":{"code":{"type":"string"},"koreanName":{"type":"string"},"englishName":{"type":"string"},"isBookmarked":{"type":"boolean"}},"required":["code","englishName","isBookmarked","koreanName"]},"PagedResponseBookmarkResponse":{"type":"object","properties":{"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/BookmarkResponse"}}},"required":["content","page","size","totalElements","totalPages"]},"EmailVerificationResponse":{"type":"object","properties":{"verified":{"type":"boolean"}},"required":["verified"]},"ChatMessageReportDto":{"type":"object","properties":{"chatMessage":{"$ref":"#/components/schemas/ChatMessageDto"},"reportCount":{"type":"integer","format":"int64"}},"required":["chatMessage","reportCount"]},"SignOutRequest":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}