BowlerKitBowlerKit
Rest API

API Routes

10/11/2026

Canonical Account API routes and service ownership for the Expo client.

Service ownership

OwnerPrefix/routeNotes
Laravel/api/v1/auth/*Auth, social login, verification, password, connected accounts
Laravel/api/v1/auth/security/*Session revoke and account deletion
Laravel/api/v1/uploadsAuthenticated file upload
Laravel/api/v1/webhooks/revenuecatRevenueCat webhook
Laravel/api/v1/app/notifications/sendSuper-admin send
Laravel/api/v1/app/notifications/broadcastSuper-admin broadcast
Shared/api/v1/app/*Authenticated mobile resource contract; Laravel compatibility or Go performance mode

Laravel auth and account routes

MethodEndpointPurpose
POST/api/v1/auth/loginEmail/password login
POST/api/v1/auth/registerCreate an account
POST/api/v1/auth/googleGoogle login
POST/api/v1/auth/appleApple login
POST/api/v1/auth/register/googleGoogle registration
POST/api/v1/auth/register/appleApple registration
POST/api/v1/auth/forgot-passwordSend reset link
POST/api/v1/auth/reset-passwordApply reset token
GET/api/v1/auth/email/verify/{id}/{hash}Signed verification link
POST/api/v1/auth/email/verification-notificationResend verification
POST/api/v1/auth/logoutRevoke current token
PUT/api/v1/auth/update-passwordChange password
GET/api/v1/auth/connected-accountsList providers
POST/api/v1/auth/connected-accounts/:providerLink Google or Apple provider
DELETE/api/v1/auth/connected-accounts/{provider}Unlink provider
DELETE/api/v1/auth/security/sessions/{id}Revoke one session
DELETE/api/v1/auth/security/sessionsRevoke all sessions
DELETE/api/v1/auth/security/delete-accountDelete account
POST/api/v1/uploadsUpload profile/media file
POST/api/v1/webhooks/revenuecatProcess RevenueCat event

Shared mobile routes

These routes are implemented by Laravel compatibility mode and the Go service. Admin-only operations are intentionally excluded from the Go shared contract.

MethodEndpointPurpose
GET/api/v1/app/meCurrent user profile
POST/api/v1/app/device-tokensStore native device/FCM token
PUT/api/v1/app/users/{uuid}Update current profile
GET/api/v1/app/security/authlogsLogin history
GET/api/v1/app/security/sessionsActive sessions
GET/api/v1/app/help-centerHelp-center overview
GET/api/v1/app/help-center/faqsPaginated/searchable FAQs
GET/api/v1/app/help-center/faqs/popularPopular FAQs
GET/api/v1/app/help-center/faqs/{id}FAQ detail
GET/api/v1/app/help-center/contactsContact methods
GET/api/v1/app/help-center/operating-hoursOperating hours
GET/api/v1/app/help-center/feedbackCurrent user's feedback
POST/api/v1/app/help-center/feedbackSubmit feedback (rate limited)
GET/api/v1/app/notificationsNotification history
PUT/api/v1/app/notifications/{id}/readMark one read
PUT/api/v1/app/notifications/read-allMark all read
DELETE/api/v1/app/notifications/{id}Delete one
DELETE/api/v1/app/notificationsDelete all
GET/api/v1/app/notifications/preferencesNotification preferences
PUT/api/v1/app/notifications/preferencesUpdate notification preferences
GET/api/v1/app/preferencesUser preferences
PUT/api/v1/app/preferencesUpdate user preferences
GET/api/v1/app/billing/entitlementsActive entitlements

Health routes

The Go process also exposes:

  • GET /health — liveness (root path).
  • GET /api/v1/health — readiness and database status.

These are service probes, not Account-authenticated mobile routes. Unknown /api/v1/* paths and intentionally unsupported sync/admin aliases return 404.