Get Rewards
Authentication Required: Any authenticated user
GET /api/rewards
Learner ID to get rewards for (shows progress for that learner)
Behavior by Role
- LEARNER: Returns their parent’s reward catalog with their own savings progress
- PARENT/ADMIN: Returns their own reward catalog (or filtered by learnerId)
Response
Response Example
Points saved toward this goal by the learner (only included when learnerId is provided)
Create Reward
Authentication Required: PARENT or ADMIN role
POST /api/rewards
Reward title
Cost in points to redeem this reward
Reward description
Reward category (e.g., “Time”, “Entertainment”, “Activities”)
Maximum number of times this reward can be redeemed (null for unlimited)
Emoji to display for this reward
Hex color code for the reward card
Response
Returns the created reward object.Error Codes
- 400 - title and tokenCost are required
- 401 - Unauthorized
- 403 - Forbidden (not a parent/admin)
Update Reward
Authentication Required: PARENT or ADMIN role
PUT /api/rewards/:rewardId
Reward ID to update
Whether the reward is active and available for redemption
Response
Returns the updated reward object.Error Codes
- 401 - Unauthorized
- 403 - Forbidden (can only update your own rewards)
- 404 - Reward not found
Delete Reward
Authentication Required: PARENT or ADMIN role
DELETE /api/rewards/:rewardId
Reward ID to delete
Response
Error Codes
- 401 - Unauthorized
- 403 - Forbidden
Save Points Toward Goal
Authentication Required: Any authenticated user
POST /api/rewards/:rewardId/save
Reward ID to save points toward
Number of points to allocate to this goal (must be positive)
Learner ID (for parent use)
Response
Error Codes
- 400 - points must be positive
- 401 - Unauthorized
- 500 - Insufficient balance
Request Redemption
Authentication Required: Any authenticated user
POST /api/rewards/:rewardId/redeem
Reward ID to redeem
Learner ID (for parent use)
The learner must have saved enough points toward this goal to cover the full cost. The redemption request will be pending until a parent approves it.
Response
Response Example
Error Codes
- 400 - Insufficient points saved for this goal
- 400 - Reward is not active
- 400 - Max redemptions reached
- 401 - Unauthorized
Get Redemptions (Parent)
Authentication Required: PARENT or ADMIN role
GET /api/redemptions
Filter by status:
PENDING, APPROVED, or REJECTEDResponse
Response Example
Get My Redemptions (Learner)
Authentication Required: Any authenticated user
GET /api/redemptions/my
Learner ID (for parent use)
Approve Redemption
Authentication Required: PARENT or ADMIN role
PUT /api/redemptions/:redemptionId/approve
Redemption ID to approve
Optional notes for the learner
Response
Returns the updated redemption object with status “APPROVED”.Reject Redemption
Authentication Required: PARENT or ADMIN role
PUT /api/redemptions/:redemptionId/reject
Redemption ID to reject
Optional notes for the learner
Response
Returns the updated redemption object with status “REJECTED”.Get Reward Summary
Authentication Required: Any authenticated user
GET /api/rewards-summary
Learner ID (defaults to authenticated user)
Response
Response Example