6 Коммуникации и доступы
Храните все данные подключений объекта: интернет, ТВ, сигнализация, видеонаблюдение, умный дом — с учётными данными, документами и датами действия.
Зачем хранить коммуникации?
Каждый объект имеет множество сервисов и подключений: интернет, телефон, сигнализация, видеонаблюдение, доступ к воротам, системы умного дома. Хранение всей этой информации в одном месте экономит время и предотвращает путаницу — особенно когда вы управляете несколькими объектами или нужно поделиться доступом с арендаторами.
Что можно организовать
- Данные WiFi и интернет-провайдера
- Доступ к сигнализации и видеонаблюдению
- Настройки умного дома и пульта ворот
- Детали ТВ и телефонного сервиса
- Прикреплённые договоры и инструкции для каждого сервиса
Какую информацию хранить
Каждая запись коммуникации может хранить следующую информацию:
Пароли хранятся в зашифрованном виде и по умолчанию скрыты в интерфейсе. Хотя вы можете использовать поле пароля для кодов WiFi, PIN-кодов сигнализации и подобных данных доступа, мы рекомендуем использовать поле пароля только для некритичных кодов. Для особо важных учётных данных рассмотрите использование специализированного менеджера паролей. Сервис хранит данные безопасно, но каждый пользователь самостоятельно решает, какую информацию сохранять.
Как добавить коммуникации
Вы можете добавлять и управлять коммуникациями через веб-интерфейс или через API.
В веб-интерфейсе: откройте страницу объекта, затем нажмите "Коммуникации" в меню объекта.
Смотрите полную документацию в Библиотеке: Коммуникации.
Типы коммуникаций
14 встроенных типов охватывают все типичные сервисы объекта. Используйте GET /api/communication-types для полного списка с ID.
Прикреплённые документы
К каждой коммуникации можно прикрепить документы — договоры, инструкции, счета. Сначала загрузите документ в объект (POST /api/properties/{id}/documents), затем прикрепите его к коммуникации по ID документа.
Примеры документов
- Договор с интернет-провайдером
- Инструкция по монтажу сигнализации
- Инструкция по настройке приложения умного дома
- Инструкция по программированию пульта ворот
Для разработчиков: REST API
Управляйте коммуникациями объекта через REST API. Поле information поддерживает HTML для форматирования.
GET Получить типы коммуникаций
▶Получить список всех доступных типов коммуникаций с их ID.
GET /api/v1/communication-types
Ответ (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 Создать коммуникацию
▶Создать новую запись коммуникации для объекта. Только communication_type_id обязателен, остальные поля необязательны.
POST /api/v1/properties/{id}/communications
Заголовки:
Authorization: Bearer {token}
Content-Type: application/json
Тело запроса:
{
"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
}
Поле `information` поддерживает HTML-форматирование (таблицы, списки, заголовки, параграфы, ссылки, встроенные стили). В целях безопасности весь HTML проходит санитизацию на сервере — скрипты, iframe, обработчики событий и опасные атрибуты автоматически удаляются.
Ответ (201 Created):
{
"message": "Communication created successfully",
"data": {
"id": 1,
"property_id": "019a1b2c-3d4e-7f5a-8b9c-0123456789ab",
"communication_type": {"id": 1, "code": "WIFI"},
"login": "MyNetwork",
"password_set": true,
"access_address": "192.168.1.1",
"is_active": true,
"documents_count": 0
}
}
GET Список коммуникаций
▶Получить все коммуникации объекта.
GET /api/v1/properties/{id}/communications
Параметры запроса:
Ответ (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 Обновить коммуникацию
▶Обновить любые поля коммуникации. Отправляйте только те поля, которые хотите изменить.
PUT /api/v1/communications/{communicationId}
Доступные поля (отправляйте только те, которые хотите изменить):
Тело запроса:
{
"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
}
Поле `information` поддерживает HTML-форматирование (таблицы, списки, заголовки, параграфы, ссылки, встроенные стили). В целях безопасности весь HTML проходит санитизацию на сервере — скрипты, iframe, обработчики событий и опасные атрибуты автоматически удаляются.
POST Прикрепить документ
▶Прикрепить существующий документ объекта к коммуникации. Документ должен принадлежать тому же объекту.
POST /api/v1/communications/{communicationId}/documents
Тело запроса:
{
"document_id": 50,
"comment": "Provider contract"
}
Ответ (201 Created):
{
"message": "Document attached successfully",
"data": {
"link_id": 12,
"document_id": 50,
"comment": "Provider contract"
}
}
Открепить документ
DELETE /api/v1/communications/{communicationId}/documents/{documentId}
Примеры cURL
▶1. Создать коммуникацию
curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/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. Список коммуникаций
curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/communications \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
3. Прикрепить документ
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"
}'