Marginking data-api
수집기(marginking-data-collectors)가 적재한 시세·온체인·뉴스·캘린더·고래 데이터를 읽기 전용으로 내려주는 API 서버입니다. (Kotlin + Spring WebFlux, ECS Fargate)
- Base URL:
https://data-api.mgking.io - 방식: 모두
GET, 인증 없음(내부/프론트용),Content-Type: application/json - 데이터 출처
- lcache (Redis): 시세/온체인/테마 등 — 수집기가 주기적으로 Redis 에 적재한 JSON 을 그대로 서빙
- RDS (MySQL): 뉴스 / 경제캘린더 / 고래체결·청산 — DB 조회
응답 형식
대부분의 응답은 공통 envelope 로 감쌉니다.
{
"success": true,
"code": "OK",
"message": null,
"data": { "...": "엔드포인트별 페이로드" },
"timestamp": "2026-06-30T11:19:16.070Z"
}
| 필드 | 설명 |
|---|---|
success | 성공 여부 |
code | OK / BAD_REQUEST / NOT_FOUND 등 |
message | 부가 메시지(성공 시 보통 null) |
data | 실제 페이로드 (엔드포인트별 형태 상이) |
error | 실패 시 { code, message, details? } |
timestamp | 서버 응답 시각(ISO-8601) |
예외 — 고래 엔드포인트
/api/v1/whaletx, /api/v1/whaletx/internal, /api/v1/liquidation 은 envelope 없이 raw 형태({ tx, hasNext, nextPage })로 응답합니다. (기존 marginking-backend 호환)
에러
| 상태 | code | 발생 |
|---|---|---|
400 | BAD_REQUEST | 필수 파라미터 누락 / 허용값 외 path·query |
404 | NOT_FOUND | 해당 키(redis)·레코드(DB)에 데이터 없음 |
{
"success": false,
"code": "BAD_REQUEST",
"message": "interval must be one of 1d, 1w, 1M, 3M, 6M",
"error": { "code": "BAD_REQUEST", "message": "..." }
}
신선도(freshness)
lcache 계열은 수집기의 적재 주기에 따라 갱신됩니다(엔드포인트별 상이). data 내부에 원본 ts/timestamp 가 있는 경우 그 값이 실제 데이터 시각입니다(envelope 의 timestamp 는 응답 생성 시각).
카테고리
| 그룹 | prefix | 출처 |
|---|---|---|
| Health | /api/ping, /api/data | - |
| Tickers | /api/tickers/* | redis |
| Markets | /api/markets/* | redis |
| Onchain | /api/onchain/* | redis |
| Themes | /api/themes/* | redis |
| Calendars | /api/calendars/* | RDS |
| News | /api/news/* | RDS + redis |
| Whales | /api/v1/whaletx*, /api/v1/liquidation | RDS |