{"success":true,"data":{"service":"notifications-api","boundary":"Owns notification preferences, push subscriptions, delivery attempts, VAPID config, and delivery.","auth":"Machine callers pass Authorization: Bearer <NOTIFICATIONS_API_TOKEN>. Verticals normalize user identity before calling this API.","routes":[{"method":"GET","path":"/","description":"Human-readable service landing page.","auth":"public"},{"method":"GET","path":"/api/docs","description":"Static route metadata and environment expectations.","auth":"public"},{"method":"GET","path":"/api/docs/openapi","description":"Minimal OpenAPI JSON for the raw notification surface.","auth":"public"},{"method":"GET","path":"/api/v1/health","description":"Deployment health check with database reachability.","auth":"public"},{"method":"GET","path":"/api/v1/push/vapid-public-key","description":"Returns the public VAPID key used by browser push subscribe.","auth":"machine"},{"method":"GET","path":"/api/v1/preferences","description":"Lists effective preferences for a normalized principal.","auth":"machine"},{"method":"PATCH","path":"/api/v1/preferences","description":"Updates preferences for a normalized principal.","auth":"machine"},{"method":"POST","path":"/api/v1/push-subscriptions","description":"Saves or refreshes a browser push subscription.","auth":"machine"},{"method":"DELETE","path":"/api/v1/push-subscriptions","description":"Revokes a browser push subscription.","auth":"machine"},{"method":"POST","path":"/api/v1/dispatch","description":"Dispatches a push notification to up to 100 normalized recipients per call. Email remains on the legacy notification path.","auth":"machine"},{"method":"POST","path":"/api/v1/test-notification","description":"Sends a dev/staging test notification.","auth":"machine"}],"requiredEnv":["NOTIFICATIONS_DATABASE_URL","NOTIFICATIONS_API_TOKEN","NEXT_PUBLIC_WEB_PUSH_VAPID_PUBLIC_KEY","WEB_PUSH_VAPID_PRIVATE_KEY","WEB_PUSH_VAPID_SUBJECT"]}}