Skip to Content
Golf TripsReferenceTrips API Surface Map

Trips API Surface Map

This reference maps Trips product areas to backend controllers and endpoint families.

Auth Modes

Trips currently uses two main auth patterns:

  1. Dashboard authenticated requests (Bearer user auth)
  2. Portal token session requests (TripPortalTokenGuard)

Use the correct mode for each endpoint family.

Core Trips

Controller: apps/api/src/modules/trips/trips.controller.ts

Primary routes:

  • POST /trips
  • GET /trips
  • GET /trips/copyable
  • POST /trips/wizard
  • GET /trips/:tripId
  • PATCH /trips/:tripId
  • DELETE /trips/:tripId
  • GET /trips/:tripId/players
  • POST /trips/:tripId/players
  • POST /trips/:tripId/players/bulk
  • PATCH /trips/:tripId/players/:playerId
  • DELETE /trips/:tripId/players/:playerId
  • GET /trips/:tripId/wizard/status
  • POST /trips/:tripId/wizard/retry
  • GET /trips/:tripId/copy

Trip Rounds

Controller: apps/api/src/modules/trips/trip-rounds.controller.ts

Primary routes:

  • POST /trips/:tripId/rounds
  • GET /trips/:tripId/rounds
  • GET /trips/:tripId/rounds/:roundId
  • PATCH /trips/:tripId/rounds/:roundId
  • DELETE /trips/:tripId/rounds/:roundId
  • PATCH /trips/:tripId/rounds/:roundId/ready
  • POST /trips/:tripId/rounds/:roundId/reset
  • POST /trips/:tripId/rounds/:roundId/complete
  • POST /trips/:tripId/rounds/:roundId/convert-to-team-scorecards

Trip Reports

Controller: apps/api/src/modules/trips/trip-reports.controller.ts

Reports shown on the trip’s Analytics page. Reads are open to people on the trip; writes are limited to organizers. Uploads are multipart/form-data with title, description and file: one HTML file up to 2 MB, or MP3 or M4A audio up to 50 MB. Audio is kept in the private trip-reports bucket and returned as a signed audio_url.

Primary routes:

  • GET /trips/:tripId/reports
  • GET /trips/:tripId/reports/:reportId
  • POST /trips/:tripId/reports
  • PATCH /trips/:tripId/reports/:reportId
  • DELETE /trips/:tripId/reports/:reportId

Portal (read-only, TripPortalTokenGuard), controller apps/api/src/modules/trip-portal/trip-portal-reports.controller.ts:

  • GET /trip-portal/trips/:tripId/reports (returns reports and links)
  • GET /trip-portal/trips/:tripId/reports/:reportId

Trip Expenses And Settlements (Dashboard)

Controller: apps/api/src/modules/trips/trip-expenses.controller.ts

Primary routes:

  • POST /trips/:tripId/expenses
  • GET /trips/:tripId/expenses
  • GET /trips/:tripId/expenses/:expenseId
  • PATCH /trips/:tripId/expenses/:expenseId
  • DELETE /trips/:tripId/expenses/:expenseId
  • POST /trips/:tripId/receipts/upload
  • GET /trips/:tripId/expense-balances
  • POST /trips/:tripId/settlements/generate
  • GET /trips/:tripId/settlements
  • GET /trips/:tripId/settlements/unified
  • POST /trips/:tripId/settlements/unified/persist
  • GET /trips/:tripId/settlements/organizer/:organizerPlayerId
  • POST /trips/:tripId/settlements/organizer/:organizerPlayerId/persist
  • PATCH /trips/:tripId/settlements/:settlementId/complete
  • POST /trips/:tripId/wagers
  • GET /trips/:tripId/wagers
  • PATCH /trips/:tripId/wagers/:wagerId/settle
  • DELETE /trips/:tripId/wagers/:wagerId
  • GET /trips/:tripId/tournament-pot
  • PATCH /trips/:tripId/tournament-pot
  • POST /trips/:tripId/tournament-pot/apply

Trip Portal

Controller: apps/api/src/modules/trip-portal/trip-portal.controller.ts

Notable groups:

  • Token/session: /trip-portal/token, /trip-portal/tokens/bulk, /trip-portal/validate
  • My trips: /trip-portal/my-trips
  • Overview/rounds: /trip-portal/trips/:tripId, /trip-portal/trips/:tripId/rounds
  • Scoring: /trip-portal/scorecards/:scorecardId/scores, /scores/bulk
  • Leaderboards: round, tournament, multi-round, Ryder Cup endpoints
  • Side games: skins and Nassau endpoints
  • Settlements and unified balances endpoints
  • Portal expenses endpoints under /trip-portal/trips/:tripId/expenses
  • Point game state/selections endpoints

Trip Travel

Controller: apps/api/src/modules/trip-travel/trip-travel.controller.ts

Primary groups:

  • Flights
  • Rental cars
  • Accommodations
  • Ride coordination (flight-based: rides/*)
  • Ride board (flight-independent, drivable trips: ride-board, ride-requests/*, ride-offers/*)
  • Aggregate travel stats

Ride board service: apps/api/src/modules/trip-travel/trip-rides.service.ts

Trip Activities

Controller: apps/api/src/modules/trip-activities/trip-activities.controller.ts

Primary groups:

  • CRUD for activities
  • Date-grouped views
  • Stats
  • Attendee management

Trip Availability

Controller: apps/api/src/modules/trip-availability/trip-availability.controller.ts

Primary groups:

  • Per-trip availability
  • Per-round availability
  • Player-level updates
  • Bulk updates

Display Manager

Controller: apps/api/src/modules/trip-display/trip-display.controller.ts

Primary groups:

  • Display config
  • Display data aggregation
  • Public display by trip or access code

Payments For Settlements

Controller: apps/api/src/modules/payments/settlement-payments.controller.ts

Primary groups:

  • Payment links
  • Mark paid / confirm receipt
  • Player payment preference endpoints

Analytics

Controller: apps/api/src/modules/analytics/analytics.controller.ts

Trip-specific groups:

  • Trip summary
  • Head-to-head and matrix
  • MVP and fun stats
  • Rivalries

Validation Sources

Use these test suites as contract references:

  • apps/api/src/modules/trip-portal/__tests__/integration/*
  • apps/api/src/modules/trips/__tests__/integration/trip-expenses-v2.integration.spec.ts
  • apps/api/src/modules/expenses/__tests__/integration/*
  • testing/simulator/src/trip/*