5 Документы объекта
Прикрепляйте договоры, техническую документацию, планы этажей и другие файлы к объектам с контролем доступа по ролям.
Зачем прикреплять документы?
Документы объекта хранят все важные файлы организованно и доступно в одном месте — договоры, техническую документацию, планы этажей, пароли и прочее.
Преимущества
- Все файлы объекта в одном организованном месте
- Видимость по ролям — контролируйте, кто видит каждый документ
- Категоризация по типам: договоры, технические документы, планы, пароли
- Безопасное облачное хранилище с доступом через подписанные URL
Как добавить документы
Вы можете загружать документы через веб-интерфейс или через API. Каждому документу присваивается тип, и при желании можно ограничить доступ для определённых ролей.
В веб-интерфейсе: откройте страницу объекта, затем нажмите "Документы" в меню объекта.
Смотрите полную документацию в Библиотеке: Документы объектов.
Типы документов
Каждый документ принадлежит к одной из пяти категорий. Выбирайте правильный тип для надлежащей организации.
Контроль доступа
По умолчанию документы доступны всем участникам объекта. Вы можете ограничить видимость для определённых ролей. Владелец и агент всегда видят все документы.
Для разработчиков: REST API
Вы можете управлять документами объекта через REST API. Файлы загружаются как контент в кодировке base64.
POST Загрузить документ
▶Загрузите документ, отправив содержимое файла как строку в кодировке base64. Укажите тип документа для категоризации.
POST /api/v1/properties/{id}/documents
Заголовки:
Authorization: Bearer {token}
Content-Type: application/json
Обязательные поля:
Необязательные поля:
Тело запроса:
{
"document_type_id": 1,
"file_content": "base64-encoded-file-content...",
"file_name": "rental-agreement.pdf",
"mime_type": "application/pdf",
"comment": "Rental agreement 2026"
}
Ответ (201 Created):
{
"message": "Document uploaded successfully",
"data": {
"id": 50,
"property_id": "019a1b2c-3d4e-7f5a-8b9c-0123456789ab",
"document_type": {
"id": 1,
"code": "OFFICIAL_DOCUMENT",
"name_key": "document_type.official.name"
},
"file_url": "https://landlordkeeper.com/file/cG1mOjUwOjA6...",
"original_name": "rental-agreement.pdf",
"file_size": 45678,
"file_size_formatted": "44.61 KB",
"mime_type": "application/pdf",
"extension": "pdf",
"is_image": false,
"is_video": false,
"is_pdf": true,
"comment": "Rental agreement 2026",
"visible_to_roles": null,
"created_at": "2026-02-20T12:00:00+00:00"
}
}
GET Список документов
▶Получить все документы объекта. Используйте фильтр type_id для показа только определённых типов.
GET /api/v1/properties/{id}/documents
Параметры запроса:
Ответ (200 OK):
{
"data": [
{
"id": 50,
"property_id": "019a1b2c-3d4e-7f5a-8b9c-0123456789ab",
"document_type": {"id": 1, "code": "OFFICIAL_DOCUMENT"},
"file_url": "https://landlordkeeper.com/file/cG1mOjUwOjA6...",
"original_name": "rental-agreement.pdf",
"file_size": 45678,
"file_size_formatted": "44.61 KB",
"is_pdf": true,
"comment": "Rental agreement 2026",
"visible_to_roles": null,
"created_at": "2026-02-20T12:00:00+00:00"
}
],
"total": 3,
"stats": {
"total_count": 3,
"total_size": 137034,
"total_size_formatted": "133.82 KB"
}
}
PUT Обновить документ
▶Обновите комментарий и/или видимость документа. Заменить сам файл нельзя — удалите и загрузите заново.
PUT /api/v1/documents/{documentId}
Тело запроса:
{
"comment": "Updated rental agreement",
"visible_to": ["PROPERTY_TENANT", "PROPERTY_MAINTENANCE"]
}
Доступные роли для visible_to:
Ответ (200 OK):
{
"message": "Document updated successfully",
"data": {
"id": 50,
"comment": "Updated rental agreement",
"visible_to_roles": ["PROPERTY_TENANT", "PROPERTY_MAINTENANCE"]
}
}
DELETE Удалить документ
▶Окончательно удалить документ по его ID.
DELETE /api/v1/documents/{documentId}
Ответ (200 OK):
{"message": "Document deleted successfully"}
Примеры cURL
▶1. Загрузить документ
curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/documents \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-d '{
"document_type_id": 1,
"file_content": "'$(base64 -w 0 contract.pdf)'",
"file_name": "contract.pdf",
"mime_type": "application/pdf",
"comment": "Rental agreement 2026"
}'
2. Список документов
curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/documents?type_id=1 \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
3. Обновить документ
curl -X PUT https://landlordkeeper.com/api/v1/documents/50 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-d '{
"visible_to": ["PROPERTY_TENANT"],
"comment": "Visible to tenant"
}'
4. Удалить документ
curl -X DELETE https://landlordkeeper.com/api/v1/documents/50 \
-H "Authorization: Bearer YOUR_TOKEN_HERE"