# Delivery Radar API 文件

Base URL: `http://localhost/web_radar/backend/public/api`

所有回應格式：

```json
{ "success": true, "message": "OK", "data": {} }
```

錯誤回應：

```json
{ "success": false, "message": "錯誤說明", "errors": null }
```

需登入的端點請帶 Header：`Authorization: Bearer <token>`

---

## Auth

### POST /auth/register

```json
{ "email": "user@example.com", "password": "123456", "nickname": "外送員" }
```

### POST /auth/login

```json
{ "email": "user@example.com", "password": "123456" }
```

### GET /auth/me

需 JWT。回傳目前使用者資料。

### PUT /auth/me

```json
{ "nickname": "新暱稱", "avatar_url": null }
```

---

## Danger Types

### GET /danger-types

回傳 7 種雷區類型列表。

---

## Reports

### GET /reports

Query: `sw_lat`, `sw_lng`, `ne_lat`, `ne_lng`（必填），`type_id`, `level`（選填）

### GET /reports/{id}

回傳雷區詳情，含 `images`。登入時多回傳 `is_favorited`。

### POST /reports

需 JWT。`multipart/form-data`：

- title, danger_type_id, description, address, latitude, longitude, danger_level
- images[]（選填，多檔）

### PUT /reports/{id}

需 JWT（作者或 admin）。JSON 或 form 欄位同 POST。

### DELETE /reports/{id}

需 JWT（作者或 admin）。

---

## Comments

### GET /reports/{id}/comments

### POST /reports/{id}/comments

需 JWT。

```json
{ "rating": 5, "content": "真的很難停車" }
```

### DELETE /comments/{id}

需 JWT（作者或 admin）。

---

## Favorites

### GET /favorites

需 JWT。我的收藏列表。

### POST /favorites/{reportId}

需 JWT。

### DELETE /favorites/{reportId}

需 JWT。

---

## Admin（需 admin 角色）

### GET /admin/users

### PATCH /admin/users/{id}/status

```json
{ "status": "banned" }
```

### GET /admin/reports?status=

### PATCH /admin/reports/{id}/status

```json
{ "status": "hidden" }
```

### DELETE /admin/reports/{id}

### GET /admin/comments

### DELETE /admin/comments/{id}

---

## 預設管理員帳號

- Email: `admin@delivery-radar.local`
- 密碼: `admin123`

（由 `database/seeds/admin_user.sql` 建立）
