Novus Founding Ambassador Platform

Mock API. Every endpoint returns the response envelope defined in docs/api-contract-v0.1.md. No database behind it yet, and the shapes will not change when there is one.

Triggering states

Append ?state= to any GET to exercise a state instead of the default. Screens need designed loading, empty, locked, stale, unavailable, suspended and error states, and this is how to see each one.

?state=ok?state=empty?state=locked?state=stale?state=unavailable?state=suspended?state=error

Example: /api/v1/dashboard/summary?state=unavailable returns data: null rather than zeros, because a zero is a claim that the ambassador earned nothing.

/api/v1/me also accepts ?state=not_authenticated, and POST /api/v1/applications accepts ?state=already_submitted.

Endpoints

GET/api/v1/meAccount, role, program status, activation checklist
POST/api/v1/applicationsSubmit application. Validates and stamps consent server-side
GET/api/v1/learnChapters, progress, resume position
POST/api/v1/learn/{chapter_id}/progressSave chapter progress
GET/api/v1/quizKnowledge check availability. No questions here
POST/api/v1/quiz/attemptsStart an attempt. Returns questions without answers
POST/api/v1/quiz/attempts/{id}/submitSubmit answers. Scored server-side
GET/api/v1/linksBoth links. URL is null unless active
GET/api/v1/marketing/assetsApproved assets. Filter by audience_type or category
GET/api/v1/dashboard/summaryReferrals and earnings. pending = booked, inside the 30-day wait
POST/api/v1/helpSupport request. No clinical route exists

Deliberately unstyled

This page carries no design on purpose. The visual language is Andrés's to set, and a placeholder style is harder to remove than to never add.