Appearance
Students
Manage your student roster.
| Operation | Endpoint | Scope |
|---|---|---|
| List students | GET /api/v1/students | api:student:read |
| Create a student | POST /api/v1/students | api:student:write |
| Get a student | GET /api/v1/students/{studentId} | api:student:read |
| Update a student | PUT /api/v1/students/{studentId} | api:student:write |
| Delete a student | DELETE /api/v1/students/{studentId} | api:student:write |
List students
GET /api/v1/students?page=1&limit=20&search=| Query | Default | Notes |
|---|---|---|
page | 1 | 1–1000. |
limit | 20 | 1–100. |
search | — | Name search. |
Returns a paged data object.
Create a student
POST /api/v1/students| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–200 chars. |
group | string | null | No | Up to 200 chars. |
note | string | null | No | Up to 2000 chars. |
email | string | null | No | Valid email. |
phone | string | null | No | Up to 50 chars. |
tags | string[] | No | Up to 50 tags. |
json
{ "data": { "created": true } } // 201Reaching your plan's roster limit returns 403 with a code and limit.
Get / update / delete
GET /api/v1/students/{studentId} → { "data": { …student } } (404 if not found)
PUT /api/v1/students/{studentId} → body { name (required), group?, note?, email?, phone?, tags? }
DELETE /api/v1/students/{studentId} → delete the student