Game
Gameplay endpoints: fetch templates, swipe, score.
Fetch templates for the current wave
Returns up to `max_templates_per_wave` templates for the calling user in the current active wave. Does not create seasons/waves; the scheduler is the only mutator. Returns empty `templates` with a `status` flag when paused / no active season / no active wave / wave done / trial ended.
Submit a swipe answer for an assignment
Records the user's left/right answer for a template assignment. Returns `correct: true` on a correct answer, or `correct: false` plus the localized feedback template payload on an incorrect answer. Blocked while the game is paused or no active wave exists.
Per-wave + per-season score for the current user
Returns score buckets for the current wave (`week`) and the active season (`season`). When paused or no active wave, returns zero-filled buckets with the appropriate `status` flag.
Public branding (tenant logo)
Returns the tenant's logo as base64. Only returns publicly safe branding fields. Sends `Cache-Control: no-store` so logo edits propagate immediately. Tenant id is read from `X-Tenant-Id`, `?tenant=`, or upstream middleware (in that order).