{"success":true,"service":"notifications-microservice","apiVersion":"1.0.0","endpoints":[{"method":"GET","path":"/health","description":"Health check endpoint","response":{"success":true,"status":"ok","timestamp":"ISO 8601 string","service":"notifications-microservice"}},{"method":"POST","path":"/notifications/validate","description":"Validate a notification payload and channel policy without creating a notification row or calling a provider","contentType":"application/json","requestBody":{"channel":"email|telegram|whatsapp (required when channelKey is omitted)","channelKey":"string (optional) - channel registry key","type":"order_confirmation|payment_confirmation|order_status_update|shipment_tracking|custom (required)","recipient":"string (required) - email address, phone number, or telegram chat ID","subject":"string (optional) - notification subject","message":"string (required) - notification message with {{template}} variables","templateData":"object (optional) - template variable values","service":"string (optional) - calling service name","purpose":"marketing|transactional|system (optional)"},"response":{"success":true,"data":{"valid":true,"mutation":false,"providerCall":false,"channel":"email|telegram|whatsapp","recipient":"string","decisionReason":"string"}}},{"method":"POST","path":"/notifications/send","description":"Send a notification via email, telegram, or whatsapp","contentType":"application/json","requestBody":{"channel":"email|telegram|whatsapp (required)","type":"order_confirmation|payment_confirmation|order_status_update|shipment_tracking|custom (required)","recipient":"string (required) - email address, phone number, or telegram chat ID","subject":"string (optional) - notification subject","message":"string (required) - notification message with {{template}} variables","templateData":"object (optional) - template variable values","botToken":"string (optional) - per-request telegram bot token","chatId":"string (optional) - telegram chat ID alternative to recipient","parseMode":"HTML|Markdown|MarkdownV2 (optional) - telegram message parse mode","inlineKeyboard":"array (optional) - telegram inline keyboard buttons"},"response":{"success":true,"data":{"id":"uuid","status":"sent","channel":"email|telegram|whatsapp","recipient":"string","messageId":"external-message-id"}}},{"method":"GET","path":"/notifications/history","description":"Get notification history with optional pagination","queryParameters":{"limit":"number (optional) - Maximum number of notifications to return (default: 50)","offset":"number (optional) - Number of notifications to skip (default: 0)"},"response":{"success":true,"data":"array of notification objects"}},{"method":"GET","path":"/notifications/status/:id","description":"Get notification status by ID","pathParameters":{"id":"string (required) - notification UUID"},"response":{"success":true,"data":{"id":"uuid","status":"pending|sent|failed","channel":"email|telegram|whatsapp","recipient":"string","error":"string|null","messageId":"string|null","createdAt":"ISO 8601 string","updatedAt":"ISO 8601 string"}}}],"timestamp":"2026-10-19T06:00:40.477Z"}