# 계정 · 즐겨찾기

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

## 인증 헤더

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

## POST /auth/register

```bash
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.user` 와 `data.token`(Bearer) 반환. 토큰 유효기간 60일.

```json
{ "success": true, "data": { "user": { "id": 1, "email": "user@example.com", "display_name": "홍길동", "provider": "local" }, "token": "c0a5fdd1..." } }
```

## POST /auth/login

```bash
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

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

## POST /auth/logout

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

## 즐겨찾기

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

### GET /favorites

```bash
# 계정
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

```bash
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}

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

## 로드맵 (2차)

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