Implement catalog terms, course search, and course details #13

Open
opened 2026-11-07 20:26:22 +00:00 by etashj · 0 comments
Member

Goal

Restore the core catalog reads used by the course browsing UI. The handlers in crates/courses-web-api/src/backend/catalog.rs currently return 501.

Scope

  • Implement GET /api/terms, GET /api/courses, and GET /api/courses/{code} using the read-only catalog connection.
  • Match the request and response shapes in sites/web/src/lib/contracts.ts; support the frontend filters and pagination with parameterized queries.
  • Select public or member data from verified server identity, and keep restricted instructor, FCE, and location fields out of anonymous responses.
  • Add OpenAPI coverage and focused tests for results, empty results, invalid inputs, and audience boundaries.

Done when

The existing course browsing UI can load terms, search or filter courses, and open a course detail without a 501 response. Update the feature status documentation.

See sites/docs/src/backend-development.md and sites/docs/src/api/data.md.

## Goal Restore the core catalog reads used by the course browsing UI. The handlers in `crates/courses-web-api/src/backend/catalog.rs` currently return 501. ## Scope - Implement `GET /api/terms`, `GET /api/courses`, and `GET /api/courses/{code}` using the read-only catalog connection. - Match the request and response shapes in `sites/web/src/lib/contracts.ts`; support the frontend filters and pagination with parameterized queries. - Select public or member data from verified server identity, and keep restricted instructor, FCE, and location fields out of anonymous responses. - Add OpenAPI coverage and focused tests for results, empty results, invalid inputs, and audience boundaries. ## Done when The existing course browsing UI can load terms, search or filter courses, and open a course detail without a 501 response. Update the feature status documentation. See `sites/docs/src/backend-development.md` and `sites/docs/src/api/data.md`.
Sign in to join this conversation.
No description provided.