{"name":"NinaNino API","version":"0.1.0","status":"ok","health":"/health","docs":"See backend/README.md in the repo for request bodies and auth details.","note":"Most routes require Authorization: Bearer <jwt>. Public routes are listed with auth: none.","route_groups":[{"prefix":"/health","auth":"none","description":"Liveness check","routes":[{"method":"GET","path":"/health"}]},{"prefix":"/auth","auth":"mixed","description":"Sign-up, login, and profile","routes":[{"method":"GET","path":"/auth/countries","auth":"none"},{"method":"POST","path":"/auth/signup","auth":"none"},{"method":"POST","path":"/auth/login","auth":"none"},{"method":"POST","path":"/auth/google","auth":"none"},{"method":"POST","path":"/auth/apple","auth":"none"},{"method":"GET","path":"/auth/me","auth":"jwt"},{"method":"PATCH","path":"/auth/me","auth":"jwt (parent)"},{"method":"PUT","path":"/auth/me/time-zone","auth":"jwt"},{"method":"DELETE","path":"/auth/me","auth":"jwt (parent)"}]},{"prefix":"/children","auth":"jwt (parent)","description":"Child accounts, screen time, and plans","routes":[{"method":"GET","path":"/children"},{"method":"POST","path":"/children"},{"method":"GET","path":"/children/:childId"},{"method":"PUT","path":"/children/:childId"},{"method":"DELETE","path":"/children/:childId"}]},{"prefix":"/tasks","auth":"jwt","description":"Tasks, submissions, and approvals","routes":[{"method":"GET","path":"/tasks"},{"method":"POST","path":"/tasks","auth":"jwt (parent)"},{"method":"GET","path":"/tasks/:taskId"},{"method":"POST","path":"/tasks/submit","auth":"jwt (child)"},{"method":"POST","path":"/tasks/approve","auth":"jwt (parent)"},{"method":"GET","path":"/tasks/templates","auth":"jwt (parent)"}]},{"prefix":"/device","auth":"jwt","description":"FCM registration and device state","routes":[{"method":"POST","path":"/device/register"},{"method":"POST","path":"/device/unregister"},{"method":"GET","path":"/device/state"}]},{"prefix":"/commands","auth":"jwt (parent)","description":"Parental commands pushed to child devices","routes":[{"method":"POST","path":"/commands/send"}]},{"prefix":"/child-apps","auth":"jwt","description":"Installed apps and restriction policies","routes":[{"method":"POST","path":"/child-apps/sync","auth":"jwt (child)"},{"method":"GET","path":"/child-apps","auth":"jwt (parent)"},{"method":"GET","path":"/child-apps/policies"},{"method":"PATCH","path":"/child-apps/policies/:packageName","auth":"jwt (parent)"}]},{"prefix":"/schedules","auth":"jwt (parent)","description":"Screen-time schedules","routes":[{"method":"GET","path":"/schedules"},{"method":"PUT","path":"/schedules"},{"method":"DELETE","path":"/schedules"}]},{"prefix":"/catalog","auth":"jwt (parent)","description":"Curriculum catalog (grades, subjects, tasks)","routes":[{"method":"GET","path":"/catalog/grades"},{"method":"GET","path":"/catalog/countries"},{"method":"GET","path":"/catalog/subjects"}]},{"prefix":"/tutorials","auth":"jwt","description":"Parent and child tutorial content","routes":[{"method":"GET","path":"/tutorials/parent","auth":"jwt (parent)"},{"method":"GET","path":"/tutorials/child/library"},{"method":"POST","path":"/tutorials/child/progress","auth":"jwt (child)"}]},{"prefix":"/subscription","auth":"mixed","description":"Premium entitlement, purchase verification, and store webhooks","routes":[{"method":"GET","path":"/subscription","auth":"jwt (parent)"},{"method":"GET","path":"/subscription/display-config","auth":"none"},{"method":"POST","path":"/subscription/verify","auth":"jwt (parent)"},{"method":"POST","path":"/subscription/restore","auth":"jwt (parent)"},{"method":"POST","path":"/subscription/google/rtdn","auth":"none (Pub/Sub)"},{"method":"POST","path":"/subscription/apple/notifications","auth":"none (Apple, JWS-signed)"}]},{"prefix":"/admin","auth":"jwt (admin)","description":"Internal admin CMS (requires admin role)","routes":[{"method":"GET","path":"/admin/stats"}]},{"prefix":"/uploads","auth":"none","description":"Static uploaded assets","routes":[{"method":"GET","path":"/uploads/*"}]}]}