Головна › Налаштування об'єкта › Документи об'єкта

5 Документи об'єкта

Прикріплюйте договори, технічну документацію, плани поверхів та інші файли до об'єктів з контролем доступу за ролями.

Навіщо прикріплювати документи?

Документи об'єкта зберігають усі важливі файли організовано та доступно в одному місці — договори, технічну документацію, плани поверхів, паролі тощо.

Переваги

  • Усі файли об'єкта в одному організованому місці
  • Видимість за ролями — контролюйте, хто бачить кожен документ
  • Категоризація за типами: договори, технічні документи, плани, паролі
  • Безпечне хмарне зберігання з доступом через підписані URL

Як додати документи

Ви можете завантажувати документи через веб-інтерфейс або через API. Кожному документу присвоюється тип, і за бажанням можна обмежити доступ для певних ролей.

У веб-інтерфейсі: відкрийте сторінку об'єкта, потім натисніть "Документи" у меню об'єкта.

Дивіться повну документацію у Бібліотеці: Документи об'єктів.

Типи документів

Кожен документ належить до однієї з п'яти категорій. Обирайте правильний тип для належної організації.

OFFICIAL_DOCUMENT Договори, угоди, акти (PDF, DOC, макс 20 МБ)
TECHNICAL_DOCUMENT Технічні специфікації, креслення (PDF, DWG, XLS, макс 50 МБ)
INFORMATIONAL_DOCUMENT Інструкції, нотатки, пам'ятки (PDF, TXT, макс 10 МБ)
SCHEMA_IMAGE Плани поверхів, схеми (JPG, PNG, PDF, макс 20 МБ)
PASSWORD_FILE Коди доступу, паролі WiFi (TXT, PDF, макс 1 МБ)

Контроль доступу

За замовчуванням документи доступні всім учасникам об'єкта. Ви можете обмежити видимість для певних ролей. Власник та агент завжди бачать усі документи.

PROPERTY_TENANT PROPERTY_TENANT_AGENT PROPERTY_MAINTENANCE
Порожній visible_to або null означає, що документ доступний усім. Вкажіть конкретні ролі для обмеження доступу.

Для розробників: REST API

Ви можете керувати документами об'єкта через REST API. Файли завантажуються як контент у кодуванні base64.

POST Завантажити документ

▶

Завантажте документ, надіславши вміст файлу як рядок у кодуванні base64. Вкажіть тип документа для категоризації.

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

Заголовки:

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

Обов'язкові поля:

document_type_id ID типу документа (1-5)
file_content Вміст файлу в кодуванні base64
file_name Оригінальне ім'я файлу з розширенням
mime_type MIME тип (application/pdf, image/png...)

Необов'язкові поля:

comment Опис або коментар до документа

Тіло запиту:

{ "document_type_id": 1, "file_content": "base64-encoded-file-content...", "file_name": "rental-agreement.pdf", "mime_type": "application/pdf", "comment": "Rental agreement 2026" }
ID типів документів: 1 = OFFICIAL_DOCUMENT, 2 = TECHNICAL_DOCUMENT, 3 = INFORMATIONAL_DOCUMENT, 4 = SCHEMA_IMAGE, 5 = PASSWORD_FILE. Використовуйте GET /api/document-types для повного списку.

Відповідь (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

Параметри запиту:

type_id Фільтр за ID типу документа (наприклад, 1 для офіційних документів)

Відповідь (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}

Використовуйте ID документа з відповіді на запит списку (GET) або завантаження (POST).

Тіло запиту:

{ "comment": "Updated rental agreement", "visible_to": ["PROPERTY_TENANT", "PROPERTY_MAINTENANCE"] }

Доступні ролі для visible_to:

PROPERTY_TENANT PROPERTY_TENANT_AGENT 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"
Замініть YOUR_TOKEN_HERE на JWT-токен з кроку автентифікації.