Home Library Property Messages

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:

Images

JPG, JPEG, PNG, GIF, WebP, BMP, SVG

Documents

PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS, ODP, TXT, RTF, CSV

Archives

ZIP, RAR, 7Z, TAR, GZ

Limits:
  • 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:

1

Select Recipient

Select a property user from the contacts list to start a conversation.

2

Write Message

Enter your message text and optionally attach files or paste images from clipboard.

3

Send

Click the send button. The message will be delivered instantly, and the recipient will receive an email notification.

4

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