Motivation / 目的
Provide APIs to list a user's favorited World Heritage sites (for a card list) and to fetch just the favorited IDs (for lightweight favorite-state checks), reusing the Favorite domain/infra already implemented in #551 and #552.
ログインユーザーのお気に入り世界遺産をカード一覧として取得するAPIと、お気に入り済みIDだけを軽量に取得するAPIを提供する。ドメイン/インフラは #551 #552 で実装済みのものを再利用する。
Scope / スコープ
GET /api/v1/users/me/favorites — お気に入り登録済みの世界遺産一覧
GET /api/v1/users/me/favorites/ids — お気に入り済みの世界遺産ID一覧
API Request / Response
GET /api/v1/users/me/favorites
Request:
user_id: 認証済みユーザー(Authorization: Bearer <token> から解決。クライアントから明示的に渡すパラメータではない)
- Query:
current_page(default: 1), per_page(default: 30)— 既存の GET /v1/heritages と同じページネーション規約に合わせる
Response (200)、既存の PaginationDto::toArray() と同じ形(items + pagination)を踏襲する:
{
"status": "success",
"data": {
"items": [ "..." ],
"pagination": {
"current_page": 1,
"per_page": 30,
"total": 42,
"last_page": 2,
"from": "1",
"to": "30",
"path": "...",
"first_page_url": "...",
"last_page_url": "...",
"next_page_url": "...",
"prev_page_url": "...",
"links": []
}
}
}
GET /api/v1/users/me/favorites/ids
Request:
user_id: 認証済みユーザー(同上)
- ページネーションなし(お気に入りIDを全件返す軽量エンドポイントのため)
Response (200):
{
"status": "success",
"data": {
"world_heritage_ids": [12, 45, 108]
}
}
Related / 関連
Sub-issues / サブIssue
Motivation / 目的
Provide APIs to list a user's favorited World Heritage sites (for a card list) and to fetch just the favorited IDs (for lightweight favorite-state checks), reusing the Favorite domain/infra already implemented in #551 and #552.
ログインユーザーのお気に入り世界遺産をカード一覧として取得するAPIと、お気に入り済みIDだけを軽量に取得するAPIを提供する。ドメイン/インフラは #551 #552 で実装済みのものを再利用する。
Scope / スコープ
GET /api/v1/users/me/favorites— お気に入り登録済みの世界遺産一覧GET /api/v1/users/me/favorites/ids— お気に入り済みの世界遺産ID一覧API Request / Response
GET /api/v1/users/me/favoritesRequest:
user_id: 認証済みユーザー(Authorization: Bearer <token>から解決。クライアントから明示的に渡すパラメータではない)current_page(default:1),per_page(default:30)— 既存のGET /v1/heritagesと同じページネーション規約に合わせるResponse (
200)、既存のPaginationDto::toArray()と同じ形(items+pagination)を踏襲する:{ "status": "success", "data": { "items": [ "..." ], "pagination": { "current_page": 1, "per_page": 30, "total": 42, "last_page": 2, "from": "1", "to": "30", "path": "...", "first_page_url": "...", "last_page_url": "...", "next_page_url": "...", "prev_page_url": "...", "links": [] } } }GET /api/v1/users/me/favorites/idsRequest:
user_id: 認証済みユーザー(同上)Response (
200):{ "status": "success", "data": { "world_heritage_ids": [12, 45, 108] } }Related / 関連
FavoriteRepositoryInterface::findHeritageIdsByUserId定義済み)FavoriteRepository::findHeritageIdsByUserId実装済み)Sub-issues / サブIssue