Current API
Validate email
Auth: None — checks if email is already registered.
Get user by username
Auth: None — returns public user/tutor profile.
Claim username
Auth: signed middleware — validates signed URL (sent via email).
Update user
Auth: None (public endpoint)
This endpoint has no auth middleware in the current routes. Verify this is intentional — it may rely on the request body validation or internal checks. Confirm with team.
Legacy v1 API
Get user
Auth: auth:api
Update user
Auth: auth:api
Policy: UserPolicy::update() — user must be internal or updating themselves.
Profile image
Auth: auth:api
Profile video
Auth: auth:api
Personal details
Auth: auth:api
Fires PersonalDetailUpdated event → syncs DOB to Stripe for tutors.
Education
Auth: auth:api
Professions
Auth: auth:api
Profiles
Auth: auth:api
Bio (max 500 chars), teacher reference number, tutoring experience.
Children
Auth: auth:api
Parents manage child profiles. Children can be linked to lessons via lesson_child pivot.
Languages
Auth: auth:api
Addresses
Auth: auth:api
Fires AddressUpdated event → syncs to Stripe.
Tutors are limited to one address — adding a new address deletes the existing one.
Mobile numbers
Auth: auth:api
Fires MobileNumberUpdated event → syncs to Stripe.
User devices
Auth: auth:api
Updates push notification device tokens.