- source_name, source_url → source: { name, url } 형태로 변경
- YouTube: schedule_youtube에서 video_id로 URL 생성
- X: schedule_x에서 post_id로 URL 생성
- 프론트엔드 전체 파일 source 객체 형태로 수정
- 문서 업데이트 (api.md, architecture.md, migration.md 등)
- tracks → album_tracks 테이블명 변경 반영
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
API 명세
Base URL: /api
인증
POST /auth/login
로그인 (JWT 토큰 발급)
GET /auth/me
현재 사용자 정보 (인증 필요)
멤버
GET /members
멤버 목록 조회
GET /members/:id
멤버 상세 조회
앨범
GET /albums
앨범 목록 조회
GET /albums/:id
앨범 상세 조회
일정
GET /schedules
일정 조회
Query Parameters:
year,month- 월별 조회 (필수, search 없을 때)search- 검색어 (Meilisearch 사용)offset,limit- 페이징
월별 조회 응답:
{
"2026-01-18": {
"categories": [
{ "id": 2, "name": "유튜브", "color": "#ff0033", "count": 3 }
],
"schedules": [
{
"id": 123,
"title": "...",
"time": "19:00:00",
"category": { "id": 2, "name": "유튜브", "color": "#ff0033" },
"source": {
"name": "fromis_9",
"url": "https://www.youtube.com/watch?v=VIDEO_ID"
}
}
]
}
}
source 객체 (카테고리별):
- YouTube (category_id=2):
{ name: "채널명", url: "https://www.youtube.com/..." } - X (category_id=3):
{ name: "X", url: "https://x.com/realfromis_9/status/..." } - 기타 카테고리: source 없음
검색 응답:
{
"schedules": [
{
"id": 123,
"title": "...",
"datetime": "2026-01-18T19:00:00",
"category": { "id": 2, "name": "유튜브", "color": "#ff0033" },
"source": { "name": "fromis_9", "url": "https://..." },
"members": ["송하영"],
"_rankingScore": 0.95
}
],
"total": 100,
"offset": 0,
"limit": 20,
"hasMore": true
}
GET /schedules/:id
일정 상세 조회
POST /schedules/sync-search
Meilisearch 전체 동기화 (인증 필요)
추천 검색어
GET /schedules/suggestions
추천 검색어 조회
Query Parameters:
q- 검색어 (2자 이상)limit- 결과 개수 (기본 10)
응답:
{
"suggestions": ["송하영", "송하영 직캠", "하영"]
}
봇 상태
GET /bots
봇 상태 조회
헬스 체크
GET /health
서버 상태 확인
API 문서
GET /docs
Scalar API Reference UI
GET /docs/json
OpenAPI JSON 스펙