{"name":"Protrack Proxy Server","version":"1.0.0","endpoints":{"health":"GET /health","devices":{"list":"GET /api/devices","info":"GET /api/devices/:imei","status":"GET /api/devices/:imei/status","multiStatus":"POST /api/devices/status"},"tracking":{"location":"GET /api/tracking/:imei","multiLocation":"POST /api/tracking/location","history":"GET /api/tracking/:imei/history?startTime=&endTime="},"alarms":{"list":"GET /api/alarms","device":"GET /api/alarms/device/:imei?begintime=&endtime= (alerts feature for parents) - last 24h by default, max 7 days","settings":"GET /api/alarms/settings/:imei","modifySettings":"PUT /api/alarms/settings/:imei"},"geofences":"GET /api/geofences","users":{"list":"GET /api/users (master only)","staticList":"GET /api/users/static (master only)","me":"GET /api/users/me","info":"GET /api/users/info/:account","subcustomers":"GET /api/users/subcustomers (master only)","sendMessage":"POST /api/users/message (master only)","roles":"GET /api/users/roles","permissions":"GET /api/users/permissions (users.read) - permission catalogue + role defaults","localList":"GET /api/users/local?school=&role= (users.read, school-scoped)","localCreate":"POST /api/users/local (users.write) - create a client account with a role","localUpdate":"PUT /api/users/local/:account (users.write) - profile, role, school, active, permissions","localResetPin":"POST /api/users/local/:account/reset-pin (users.write)","localRole":"PUT /api/users/local/:account/role (users.write)","localStatus":"PUT /api/users/local/:account/status (users.write)","myProfile":"GET /api/users/me/profile","updateMyProfile":"PUT /api/users/me/profile"},"reports":{"mileage":"GET /api/reports/mileage?imeis=&begintime=&endtime=","summary":"GET /api/reports/summary?type=buses|trips|students|parents|crew&school=&from=&to= (reports.read)"},"schools":{"list":"GET /api/schools (schools.read; admin: all, others: own)","mine":"GET /api/schools/mine (school_admin/chauffeur/parent)","create":"POST /api/schools (admin only)","update":"PUT /api/schools/:id (admin, or school_admin for their own school)","details":"GET /api/schools/:id (school + counters)","logo":"GET /api/schools/:id/logo (public), PUT (raw image, max 300 KB) / DELETE (admin or own school_admin)"},"buses":{"list":"GET /api/buses?school= (buses.read; admin: all, others: own school)","mine":"GET /api/buses/mine (chauffeur/accompagnateur)","create":"POST /api/buses (buses.write) - links a fleet bus to a Protrack365 imei","update":"PUT /api/buses/:id (buses.write)"},"students":{"list":"GET /api/students?school= (students.read)","mine":"GET /api/students/mine (parent)","create":"POST /api/students (students.write)","update":"PUT /api/students/:id (students.write)"},"plans":{"features":"GET /api/plans/features","list":"GET /api/plans?school= (school plans + global plans)","create":"POST /api/plans (plans.write)","update":"PUT /api/plans/:id (plans.write)"},"subscriptions":{"mine":"GET /api/subscriptions/mine (parent)","entitlements":"GET /api/subscriptions/entitlements/mine (parent) - unlocked features per child","list":"GET /api/subscriptions?school=&status= (subscriptions.read)","paymentMethods":"GET /api/subscriptions/payment-methods - online payment methods available","create":"POST /api/subscriptions (parent) { studentId, planId, provider: orange_money|paypal } - starts a payment, returns paymentUrl","paypalConfirm":"POST /api/subscriptions/paypal/confirm { orderId } - capture an approved PayPal order (return page)","manual":"POST /api/subscriptions/manual (subscriptions.manage) { studentId, planId, amount?, notes? }","refresh":"POST /api/subscriptions/:id/refresh - poll Orange Money for payment status","extend":"POST /api/subscriptions/:id/extend { months } (subscriptions.manage)","suspend":"POST /api/subscriptions/:id/suspend (subscriptions.manage)","resume":"POST /api/subscriptions/:id/resume (subscriptions.manage)","cancel":"POST /api/subscriptions/:id/cancel (subscriptions.manage)"},"dashboard":{"stats":"GET /api/dashboard/stats?school= (dashboard.read)"},"fleet":{"live":"GET /api/fleet?school= (tracking.fleet) - live position/status of every vehicle; admin without school: all Protrack devices incl. unlinked"},"payments":{"orangeMoneyWebhook":"POST /api/payments/orange-money/notify (public, called by Orange Money)","paypalWebhook":"POST /api/payments/paypal/webhook (public, called by PayPal, signature verified)"}}}