Skip to content

feat: Add favorite heritages list & favorite-ids APIs / お気に入り世界遺産一覧・IDs取得APIの追加 #555

Description

@zigzagdev

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions