# Story 1.1: Course Catalog Read API

key: 1-1-course-catalog-read-api
status: drafted
phase: backend-planning
note: Non-implementasi — hanya dokumentasi & kontrak API.

## Ringkasan
Endpoint read-only untuk daftar kursus dengan paging dan filter dasar.

## Scope Backend
- Read list: fields minimum (id, title, category, level, updatedAt)
- Query params: `page`, `pageSize`, `q`, `category`, `level`
- Sorting: `sortBy=updatedAt|title`, `order=asc|desc`

## Acceptance Gate
- Kontrak API disetujui PM/SM/Architect
- Data privacy & rate-limiting disepakati
- Tidak ada coding hingga gate “solutioning” terpenuhi

## Kontrak (Outline)
- Route: GET /api/courses
- Response: 200
```
{
  "page": 1,
  "pageSize": 20,
  "total": 120,
  "items": [{"id":"c1","title":"Basic Knife Skills","category":"kitchen","level":"beginner","updatedAt":"2025-10-01T12:00:00Z"}]
}
```