Get Notifications
Get paginated list of notifications with optional filtering
/members/me/notificationsOverview
Returns a paginated list of notifications for the authenticated member. Notifications include system messages, wallet updates, reservation confirmations, and other important updates.
Authentication
Requires a valid Clerk JWT token in the Authorization header.
Query Parameters
limitquerynumberMaximum number of notifications to return (default: 20, max: 100)
offsetquerynumberNumber of notifications to skip for pagination (default: 0)
sortOrderquerystringSort order: "asc" or "desc" (default: "desc" - newest first)
readquerybooleanFilter by read status: true for read only, false for unread only, omit for all
walletquerybooleanFilter for wallet-related notifications only (points, transactions, etc.)
Request
curl -X GET "http://localhost:3000/v1/members/me/notifications?limit=10" \
-H "Authorization: Bearer YOUR_CLERK_JWT"Response
itemsarrayrequiredList of notification objects
array items
idnumberrequiredUnique notification ID
typestringrequiredNotification type: "wallet", "reservation", "system", "promotion", etc.
titlestringNotification title/subject
messagestringNotification message content
messagePartsobjectStructured message parts for rich formatting
isReadbooleanrequiredWhether the notification has been marked as read
isWalletbooleanrequiredWhether this is a wallet-related notification
metadataobjectAdditional notification metadata (links, actions, etc.)
createdAtstringrequiredISO 8601 timestamp when notification was created
updatedAtstringrequiredISO 8601 timestamp when notification was last updated
readAtstringISO 8601 timestamp when notification was marked as read (null if unread)
totalnumberrequiredTotal number of notifications matching filters
limitnumberrequiredCurrent pagination limit
offsetnumberrequiredCurrent pagination offset
Response
{
"items": [
{
"id": 1234,
"type": "wallet",
"title": "Points Earned",
"message": "You earned 2,500 points from your recent stay at Luxury Resort Bali",
"messageParts": {
"action": "points_earned",
"amount": 2500,
"source": "reservation",
"propertyName": "Luxury Resort Bali"
},
"isRead": false,
"isWallet": true,
"metadata": {
"reservationId": "550e8400-e29b-41d4-a716-446655440000",
"propertyId": "prop_luxury_resort_bali",
"pointsType": "VALID"
},
"createdAt": "2024-04-20T10:30:00Z",
"updatedAt": "2024-04-20T10:30:00Z",
"readAt": null
},
{
"id": 1233,
"type": "reservation",
"title": "Booking Confirmed",
"message": "Your reservation at Tokyo Business Hotel is confirmed for May 15-17",
"messageParts": {
"action": "booking_confirmed",
"propertyName": "Tokyo Business Hotel",
"checkIn": "2024-05-15",
"checkOut": "2024-05-17"
},
"isRead": true,
"isWallet": false,
"metadata": {
"reservationId": "550e8400-e29b-41d4-a716-446655440001",
"confirmationCode": "ABC123",
"actionUrl": "/reservations/550e8400-e29b-41d4-a716-446655440001"
},
"createdAt": "2024-04-18T14:20:00Z",
"updatedAt": "2024-04-18T16:45:00Z",
"readAt": "2024-04-18T16:45:00Z"
},
{
"id": 1232,
"type": "promotion",
"title": "Limited Time Offer",
"message": "Get 25% bonus points on your next booking this weekend",
"messageParts": {
"action": "promotion",
"bonusPercent": 25,
"expiryDate": "2024-04-22"
},
"isRead": false,
"isWallet": false,
"metadata": {
"campaignId": "weekend-bonus-2024",
"actionUrl": "/discover/featured",
"cta": "Book Now"
},
"createdAt": "2024-04-17T09:00:00Z",
"updatedAt": "2024-04-17T09:00:00Z",
"readAt": null
},
{
"id": 1231,
"type": "system",
"title": "Profile Updated",
"message": "Your travel preferences have been updated successfully",
"messageParts": {
"action": "profile_updated",
"section": "travelPreferences"
},
"isRead": true,
"isWallet": false,
"metadata": {
"actionUrl": "/profile"
},
"createdAt": "2024-04-16T11:15:00Z",
"updatedAt": "2024-04-16T12:00:00Z",
"readAt": "2024-04-16T12:00:00Z"
}
],
"total": 47,
"limit": 10,
"offset": 0
}Notification Types
wallet
- Purpose: Points earned, spent, transfers, balance updates
- isWallet: Always true
- Common Metadata:
pointsType,amount,reservationId
reservation
- Purpose: Booking confirmations, check-in reminders, modifications
- isWallet: Always false
- Common Metadata:
reservationId,confirmationCode,actionUrl
promotion
- Purpose: Special offers, bonus campaigns, member benefits
- isWallet: Usually false
- Common Metadata:
campaignId,expiryDate,cta
system
- Purpose: Account updates, profile changes, system messages
- isWallet: Usually false
- Common Metadata:
actionUrl,section
Filtering Options
By Read Status
- read=true: Only read notifications
- read=false: Only unread notifications
- Omitted: All notifications (both read and unread)
By Category
- wallet=true: Only wallet-related notifications (points, transactions)
- wallet=false: Only non-wallet notifications
- Omitted: All notification types
Sorting
- sortOrder="desc": Newest first (default)
- sortOrder="asc": Oldest first
Message Structure
Simple Text
- message: Plain text notification
- title: Optional title/subject
Rich Messages
- messageParts: Structured data for rich formatting
- metadata: Additional context and actions
- actionUrl: Deep link for user actions
Example Rich Message
{
"messageParts": {
"action": "points_earned",
"amount": 2500,
"source": "reservation",
"propertyName": "Luxury Resort Bali"
},
"metadata": {
"reservationId": "550e8400...",
"actionUrl": "/reservations/550e8400..."
}
}Related Endpoints
- Get Unread Count - Get count of unread notifications
- Mark as Read - Mark specific notification as read
- Mark as Unread - Mark specific notification as unread