2.0 KiB
QuestionsApi
STEP-style question bank service for study games and clients.
Endpoints
GET /healthzHealth check.GET /api/questions/systemsList available systems.POST /api/questions/searchSearch or build a block of questions.GET /api/questions/{id}Get one question.POST /api/questionsCreate question (SUPER only).POST /api/questions/bulkUpsert questions byexternalId(SUPER only).PUT /api/questions/{id}Update question (SUPER only).DELETE /api/questions/{id}Delete question (SUPER only).POST /api/question-reportsSubmit a categorized question report (USER or SUPER).GET /api/question-reportsList and filter reports, newest first (SUPER only).GET /api/question-reports/{id}Get a report and its question snapshot (SUPER only).PATCH /api/question-reports/{id}/statusResolve or dismiss an open report (SUPER only).
Player reads require USER or SUPER JWT auth. Authoring endpoints require SUPER.
Answer tracking
The QuestionAttempts collection is the immutable source of truth and enforces
one first attempt per question and user with a unique compound index. Choice
percentages are served from 32-way materialized counter buckets and cached for
up to five minutes. A background service backfills counters on the first deploy
and reconciles recently active questions every five minutes.
GET /readyzverifies MongoDB connectivity for readiness checks.GET /metricsexposes Prometheus-format service and reconciliation metrics.
The manifests in k8s/ configure 2-10 API replicas. The cluster must have
Kubernetes Metrics Server installed before applying them with
kubectl apply -k k8s/.
Questions submitted through authoring endpoints must have authoritative direct reference links recorded as described in the repository's Question Verification References policy. The references must verify the keyed answer and the material claims in the explanation; search-result links are not acceptable.