Home Property Setup Communications & Access

6 Communications & Access

Store all connection details for your property: internet, TV, alarm, video surveillance, smart home — with credentials, documents, and validity dates.

Why Store Communications?

Every property has multiple services and connections: internet, phone, alarm, video surveillance, gate access, smart home systems. Keeping all this information organized in one place saves time and prevents confusion — especially when you manage several properties or need to share access with tenants.

What you can organize

  • WiFi and internet provider credentials
  • Alarm and video surveillance system access
  • Smart home and gate remote control settings
  • TV and phone service details
  • Attached contracts and manuals for each service

What Information to Store

Each communication record can store the following information:

communication_type_id Type of service (required)
login Account name, SSID, or username
password Password or access code (stored encrypted)
access_address URL, IP address, or web panel link
information Notes in HTML format (provider name, plan, etc.)
is_active Active or inactive flag
About storing sensitive data
Passwords are stored in encrypted form and are hidden by default in the interface. While you can use the password field for WiFi codes, alarm PINs, and similar access data, we recommend using the password field only for non-critical codes. For highly sensitive credentials, consider using a dedicated password manager. The service stores data securely, but each user is responsible for deciding what information to save.

How to Add Communications

You can add and manage communications via the web interface or through the API.

In the web interface: open the property page, then click "Communications" in the property menu.

See the full documentation in the Library: Communications.

Communication Types

14 built-in types cover all common property services. Use GET /api/communication-types to get the full list with IDs.

WIFI WiFi network
INTERNET_FIBER Fiber optic internet
STARLINK Starlink satellite internet
TV_IPTV / TV_SATELLITE Television (IPTV / Satellite)
VIDEO_SURVEILLANCE Video surveillance (CCTV)
ALARM_SYSTEM Alarm / security system
REMOTE_GATE Remote gate / barrier
SMART_HOME Smart home system
PHONE_WIRED / PHONE_WIRELESS Landline / mobile phone
OTHER_COMMUNICATION Any other service

Attached Documents

Each communication can have documents attached — contracts, manuals, invoices. First upload the document to the property (POST /api/properties/{id}/documents), then attach it to the communication by document ID.

Example documents

  • Internet provider contract
  • Alarm system installation manual
  • Smart home app setup guide
  • Gate remote programming instructions

For Developers: REST API

Manage property communications via the REST API. The information field supports HTML for rich formatting.

GET Get Communication Types

Get the list of all available communication types with their IDs.

GET /api/v1/communication-types

Response (200 OK):

{ "data": [ {"id": 1, "code": "WIFI", "name_key": "communication_type.wifi.name"}, {"id": 5, "code": "INTERNET_FIBER", "name_key": "communication_type.internet_fiber.name"}, {"id": 10, "code": "VIDEO_SURVEILLANCE", "name_key": "communication_type.video_surveillance.name"}, {"id": 11, "code": "ALARM_SYSTEM", "name_key": "communication_type.alarm_system.name"} ] }

POST Create Communication

Create a new communication record for a property. Only communication_type_id is required, all other fields are optional.

POST /api/v1/properties/{id}/communications

Headers:

Authorization: Bearer {token} Content-Type: application/json

Request Body:

{ "communication_type_id": 1, "login": "MyNetwork", "password": "wifi-pass-2026", "access_address": "192.168.1.1", "information": "<p>Router: TP-Link Archer AX73</p><p>Provider: Kyivstar Fiber 500 Mbps</p>", "is_active": true }
The information field accepts HTML. Use &lt;p&gt;, &lt;b&gt;, &lt;ul&gt;/&lt;li&gt; tags for structured content.

The <code>information</code> field supports HTML formatting (tables, lists, headings, paragraphs, links, inline styles). For security, all HTML is sanitized on the server — scripts, iframes, event handlers, and dangerous attributes are automatically removed.

Response (201 Created):

{ "message": "Communication created successfully", "data": { "id": 1, "property_id": 2, "communication_type": {"id": 1, "code": "WIFI"}, "login": "MyNetwork", "password_set": true, "access_address": "192.168.1.1", "is_active": true, "documents_count": 0 } }

GET List Communications

Get all communications for a property.

GET /api/v1/properties/{id}/communications

Query Parameters:

active_only Show only active communications (true/false)

Response (200 OK):

{ "data": [ { "id": 1, "communication_type": {"id": 1, "code": "WIFI"}, "login": "MyNetwork", "password_set": true, "access_address": "192.168.1.1", "is_active": true, "is_currently_active": true, "documents_count": 1 } ], "total": 5 }

PUT Update Communication

Update any fields of a communication. Only send the fields you want to change.

PUT /api/v1/communications/{communicationId}

Available fields (send only those you want to change):

login string | null
password string | null
access_address string | null
information string (HTML) | null
is_active boolean

Request Body:

{ "login": "NewNetwork_5G", "password": "new-wifi-pass-2026", "access_address": "192.168.1.1", "information": "<h3>Updated Router Info</h3><p>Speed: 1 Gbps</p>", "is_active": true }
Use the communication ID from the list (GET) or create (POST) response.

The <code>information</code> field supports HTML formatting (tables, lists, headings, paragraphs, links, inline styles). For security, all HTML is sanitized on the server — scripts, iframes, event handlers, and dangerous attributes are automatically removed.

POST Attach Document

Attach an existing property document to a communication. The document must belong to the same property.

POST /api/v1/communications/{communicationId}/documents

Request Body:

{ "document_id": 50, "comment": "Provider contract" }
First upload the document to the property via POST /api/properties/{id}/documents, then attach it here using the returned document ID.

Response (201 Created):

{ "message": "Document attached successfully", "data": { "link_id": 12, "document_id": 50, "comment": "Provider contract" } }

Detach Document

DELETE /api/v1/communications/{communicationId}/documents/{documentId}

Removes the link between communication and document. The document itself is not deleted.

cURL Examples

1. Create Communication

curl -X POST https://landlordkeeper.com/api/v1/properties/2/communications \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "communication_type_id": 1, "login": "MyNetwork", "password": "wifi-pass-2026", "access_address": "192.168.1.1", "is_active": true }'

2. List Communications

curl https://landlordkeeper.com/api/v1/properties/2/communications \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

3. Attach Document

curl -X POST https://landlordkeeper.com/api/v1/communications/1/documents \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "document_id": 50, "comment": "Provider contract" }'
Replace YOUR_TOKEN_HERE with the JWT token from the authentication step.