Property Messages
Direct messaging between property users with file attachments and replies.
Overview
The Property Messages module provides a secure messaging system for communication between property users (landlords, tenants, and their agents). Users can send direct messages, attach files, and reply to previous messages in a Telegram-like experience.
Direct Messages
Send private one-on-one messages between property users. Messages are only visible to sender and recipient.
File Attachments
Attach up to 10 files per message (images, documents, archives). Maximum 10 MB per file.
Reply to Messages
Reply to specific messages with a visual link to the original message, like in Telegram.
Clipboard Paste
Paste images directly from clipboard (Ctrl+V) to quickly attach screenshots.
Notifications
Global badge shows unread messages count. Dropdown menu displays recent messages.
Email Notifications
Receive email notifications for new messages when not actively on the site.
File Types
The following file formats are supported:
JPG, JPEG, PNG, GIF, WebP, BMP, SVG
PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS, ODP, TXT, RTF, CSV
ZIP, RAR, 7Z, TAR, GZ
- Maximum file size: 10 MB
- Maximum files per message: 10
- Maximum message length: 1000 characters
File Storage
Files are stored on a secure S3 cloud storage at the following path:
messages_chat/{message_id}/{file_hash}.{extension}
Files are only accessible to conversation participants via secure links.
How It Works
The messaging process consists of the following steps:
Select Recipient
Select a property user from the contacts list to start a conversation.
Write Message
Enter your message text and optionally attach files or paste images from clipboard.
Send
Click the send button. The message will be delivered instantly, and the recipient will receive an email notification.
Receive Reply
Receive replies in real-time. The page updates automatically every 30 seconds.
Permissions
Access to messages is governed by the following rules:
| Action | Who Can |
|---|---|
| Send message | Any property user |
| View messages | Only sender and recipient |
| Attach files | Any property user |
| Edit / Delete | Prohibited for all users |
REST API
REST API allows you to integrate the messaging system with your applications. Use the endpoints below to receive and send messages.
Service layer note
GET /api/v1/messages/unread-count - Get unread count
GET /api/v1/messages/recent - Get recent messages
GET /api/v1/properties/{id}/messages - List messages
POST /api/v1/properties/{id}/messages - Create message
GET /api/v1/properties/{id}/messages/{mid} - Get message details
POST /api/v1/properties/{id}/messages/{mid}/read - Mark message as read
GET /api/v1/properties/{id}/messages/unread-count - Get unread messages for property
Create Message Example
To create a message, send a POST request with a JSON body containing the recipient ID and message text.
POST /api/v1/properties/5/messages Content-Type: multipart/form-data recipient_id: 15 message: Hello, please find the attached documents. reply_to_id: 123 (optional) files[]: document.pdf files[]: photo.jpg
Example Response
{
"id": 456,
"message": "Hello, please find the attached documents.",
"createdAt": "2026-01-19T14:30:00+00:00",
"readAt": null,
"sender": {
"id": 8,
"name": "Owner Name",
"email": "[email protected]"
},
"recipient": {
"id": 15,
"name": "Tenant Name",
"email": "[email protected]"
},
"property": {
"id": 5,
"name": "Apartment #12"
},
"replyTo": {
"id": 123,
"message": "Previous message text...",
"sender": {"id": 15, "name": "Tenant Name"}
},
"hasFiles": true,
"filesCount": 2,
"files": [
{
"id": 1,
"originalName": "document.pdf",
"mimeType": "application/pdf",
"fileSize": 102400,
"fileSizeFormatted": "100 KB",
"isImage": false,
"isDocument": true,
"isArchive": false,
"url": "https://s3.example.com/messages_chat/456/abc123.pdf",
"createdAt": "2026-01-19T14:30:00+00:00"
},
{
"id": 2,
"originalName": "photo.jpg",
"mimeType": "image/jpeg",
"fileSize": 256000,
"fileSizeFormatted": "250 KB",
"isImage": true,
"isDocument": false,
"isArchive": false,
"url": "https://s3.example.com/messages_chat/456/def456.jpg",
"createdAt": "2026-01-19T14:30:00+00:00"
}
]
}
Swagger / OpenAPI
Full API documentation is available at Swagger /api/v1/doc