계정 · 즐겨찾기

/api/v1 .md 원문

계정 · 즐겨찾기

계정은 선택 사항입니다. 회원가입 없이도 청취와 (기기 단위) 즐겨찾기가 가능합니다.

인증 헤더

  • 계정 로그인: Authorization: Bearer {token}
  • 익명 기기: X-Device-UUID: {기기 고유 UUID}

POST /auth/register

curl -X POST https://tune.tideflo.work/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"password12345","display_name":"홍길동"}'
  • email 필수(형식 검증), password 8자 이상, display_name 선택.
  • 성공(201): data.userdata.token(Bearer) 반환. 토큰 유효기간 60일.
{ "success": true, "data": { "user": { "id": 1, "email": "user@example.com", "display_name": "홍길동", "provider": "local" }, "token": "c0a5fdd1..." } }

POST /auth/login

curl -X POST https://tune.tideflo.work/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"password12345"}'

성공 시 data.token 발급(로그인마다 새 토큰).

GET /auth/me

curl https://tune.tideflo.work/api/v1/auth/me -H "Authorization: Bearer {token}"

POST /auth/logout

현재 토큰을 폐기합니다. Authorization: Bearer {token} 필요.

즐겨찾기

소유자는 로그인 토큰 또는 기기 UUID 로 판별됩니다(토큰 우선).

GET /favorites

# 계정
curl https://tune.tideflo.work/api/v1/favorites -H "Authorization: Bearer {token}"
# 익명 기기
curl https://tune.tideflo.work/api/v1/favorites -H "X-Device-UUID: 550e8400-..."

data 는 방송국 요약 배열(‘/stations’ 목록과 동일한 형식).

POST /favorites

curl -X POST https://tune.tideflo.work/api/v1/favorites \
  -H "Content-Type: application/json" -H "X-Device-UUID: 550e8400-..." \
  -d '{"station_id": 11}'
  • 이미 존재하면 그대로 성공(멱등). 201 반환.

DELETE /favorites/{stationId}

curl -X DELETE https://tune.tideflo.work/api/v1/favorites/11 -H "X-Device-UUID: 550e8400-..."

로드맵 (2차)

  • 구글 / 카카오 / 네이버 소셜 로그인 (스키마의 provider, provider_uid 필드 사용 예정)
  • 계정 ↔ 기기 즐겨찾기 병합