LMS-BGN/docs/stories/3-1-reward-accrual-record-c...

935 B

Story 3.1: Reward Accrual Record Create API

key: 3-1-reward-accrual-record-create status: drafted phase: backend-planning note: Non-implementasi — definisi payload, idempotency, audit logging.

Ringkasan

Endpoint untuk mencatat accrual reward yang timbul dari event (misal: penyelesaian modul/assignment) secara aman dan idempoten.

Scope Backend

  • Payload: { userId, sourceEventId, sourceType, points, occurredAt, reason, metadata }
  • Idempotency key: header Idempotency-Key untuk deduplikasi request
  • De-duplication: oleh kombinasi sourceEventId + sourceType atau Idempotency-Key
  • Audit: who/when, immutable log, traceability

Acceptance Gate

  • Idempotency & audit logging disepakati
  • Privasi & rate limiting disetujui

Kontrak (Outline)

  • Route: POST /api/rewards/accruals
  • Response: 201
{ "accrualId":"ra1", "status":"accepted", "userId":"u1", "points":10, "occurredAt":"2025-11-12T10:00:00Z" }