Skip to content

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

See E4: Ticket Purchase Tasks

Doc References


Last Updated: January 2026