Achievements
Achievement definitions with XP rewards, unlock criteria, and optional hidden state.
Achievements unlock automatically based on the evaluation of their criteria JSONB. Read the shared CreateAchievementInput type for the full schema.
Source: apps/api/src/routes/admin/achievements.ts.
Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /admin/projects/:projectId/achievements | Create an achievement. |
| GET | /admin/projects/:projectId/achievements | List achievements, ordered by sort_order. |
| GET | /admin/projects/:projectId/achievements/:achievementId | Fetch a single achievement. |
| PATCH | /admin/projects/:projectId/achievements/:achievementId | Partial update. |
| DELETE | /admin/projects/:projectId/achievements/:achievementId | Delete. |
POST /admin/projects/:projectId/achievements
Request
| Field | Type | Required | Default |
|---|---|---|---|
key | string | yes | — |
name | string | yes | — |
description | string | no | null |
icon_url | string | no | null |
xp_reward | number | no | 0 |
criteria | object | yes | — |
is_hidden | boolean | no | false |
sort_order | number | no | 0 |
criteria is a JSONB rule tree — see CreateAchievementInput in @amba/shared for the current shape (event-count thresholds, property filters, composite all/any combinators).
Response 201
Errors
500 CREATE_FAILED.
Try it:
POST
developer auth/admin/projects/%7B%7BprojectId%7D%7D/achievementscurl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/achievements'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
GET /admin/projects/:projectId/achievements
Ordered by sort_order.
Try it:
GET
developer auth/admin/projects/%7B%7BprojectId%7D%7D/achievementscurl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/achievements'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
GET /admin/projects/:projectId/achievements/:achievementId
Errors
404 NOT_FOUND.
Try it:
GET
developer auth/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7Dcurl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
PATCH /admin/projects/:projectId/achievements/:achievementId
Allowed fields: name, description, icon_url, xp_reward, criteria, is_hidden, sort_order, is_active.
Errors
404 NOT_FOUND.500 UPDATE_FAILED.
Try it:
PATCH
developer auth/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7Dcurl -X PATCH 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
DELETE /admin/projects/:projectId/achievements/:achievementId
Try it:
DELETE
developer auth/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7Dcurl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/achievements/%7B%7BachievementId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl: