Skip to Content
API ReferenceAnalytics API

Analytics API

File: app/api/analytics/route.ts

POST /api/analytics

Records an analytics event to Supabase.

Request body

{ "gpx": "https://www.bttpirineus.org/wp-content/uploads/ruta.gpx", "event": "view", "event_name": "view", "event_group": "engagement", "share_channel": null, "ui_surface": "embed_bottom_bar", "session_id": "abc123", "referrer_host": "www.bttpirineus.org", "meta_json": {} }
FieldRequiredDescription
gpxYesGPX file URL
event_nameYesMust match /^[a-z0-9_:-]{1,64}$/i
eventNoLegacy field: view, download, or share
event_groupNoAuto-inferred if not provided
share_channelNoShare platform identifier
ui_surfaceNoWhere the action occurred
session_idNoClient-generated session ID
referrer_hostNoExtracted from document.referrer
meta_jsonNoArbitrary metadata object

Response

{ "ok": true }

If Supabase is not configured, silently returns { "ok": true } without writing.


GET /api/analytics

Returns aggregated event counts for a single GPX URL.

Parameters

ParameterRequiredDescription
gpxYesGPX file URL to query

Response

{ "views": 42, "downloads": 12, "shares": 3 }

Cache: s-maxage=60 (60-second server-side cache).

If Supabase is not configured, returns zeros.