E4-F1: Match Listing API (Mobile)¶
Epic: E4: Ticket Purchase Flow
Size: S (Small)
Problem / Outcome¶
Fans browse available matches.
Scope¶
In-Scope:
- GET /matches endpoint for upcoming matches
- Match details including sale status
- Pricing preview with pre-sale/match day rates
Out-of-Scope:
- Search/filter (basic list is sufficient)
Acceptance Criteria¶
- AC1: API returns upcoming matches sorted by date
- AC2: Each match includes sale status (not on sale, on sale, sold out)
- AC3: Pre-sale pricing shown with discount expiration date
Data Model Impact¶
No new tables required (read-only).
Response includes:
- id (UUID)
- home_team (VARCHAR)
- away_team (VARCHAR)
- competition (VARCHAR)
- kick_off_time (TIMESTAMP)
- venue_name (VARCHAR)
- sale_status (ENUM: not_on_sale, on_sale, sold_out)
- price_from (DECIMAL)
- presale_ends_at (TIMESTAMP)
Permissions/Roles¶
- Public (no auth required for listing)
- Authenticated user (for purchase)
How to Verify¶
npm test -- --grep "match listing"
Expected: Matches returned with correct status and pricing.
Dependencies¶
Implementation Tasks¶
Doc References¶
Last Updated: January 2026