Release / build-and-push (push) Successful in 3m2s
TestAudioResumeRewind drives the whole surface against the shared dev DB with the fresh per-test regular user (the live admin is never touched; the fixture book lives in a test-named library that cascades away): default 0, profile PUT "5" rides the chapters payload, non-allow-listed values 400 without side effects, explicit "0" resets everywhere, and an omitted JSON key leaves the column untouched. Changelog entry in docs/contract_pins.md (additive chapters key + the profile field's string-shaped PUT, keep_screen_awake precedent) and the get_profile.md example gains the preference keys. Debug note for the next agent: the first runs here 401'd with 'Ghost session rejected' — NOT a harness or auth bug. The tests never execute schema.sql; the shared dev DB gets its schema from the app container's boot. The rebuilt tests image ran the new GetUser (selecting audio_resume_rewind_seconds) against a DB whose schema came from the old app image — every GetUser errored, and the ghost-session guard turned that into 401s. Applying the schema.sql ALTER to the dev DB (what the next app rebuild does anyway) turned the suite green. Until make rebuild-app runs, the running app container serves the old binary.
993 B
993 B
method, path, auth, area
| method | path | auth | area |
|---|---|---|---|
| GET | /api/auth/profile | jwt | authentication |
Get Current User Profile
Retrieve the current authenticated user's profile.
Endpoint: GET /api/auth/profile
Auth: Required
Request Headers
| Header | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer token |
Example Request
GET /api/auth/profile
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Response (200 OK)
{
"id": "uuid",
"email": "user@example.com",
"username": "john",
"first_name": "John",
"last_name": "Doe",
"role": "user",
"default_audio_speed": 1.5,
"audio_resume_rewind_seconds": 5,
"keep_screen_awake": true
}
Error Responses
| Code | Description |
|---|---|
| 401 | Invalid or expired token |