# API Документация

Този документ описва RESTful API ендпойнтовете, използвани от приложението **NVR & Camera Manager**. Всички отговори са в JSON формат.

**Базов URL:** `/api`

---

## 1. Обекти (Objects)

**Ендпойнт:** `/api/objects.php`

### `GET /api/objects.php`

Връща списък с всички обекти.

### `GET /api/objects.php?id={id}`

Връща информация за конкретен обект.

### `POST /api/objects.php`

Създава нов обект.

**Тяло на заявката (JSON):**
```json
{
    "name": "Име на обекта",
    "address": "Адрес",
    "nvr_model": "Модел на NVR",
    "serial_number": "123456",
    "username": "admin",
    "password": "password123",
    "ip_address": "192.168.1.10",
    "http_port": 80,
    "rtsp_port": 554,
    "isp_provider": "Доставчик"
}
```

### `PUT /api/objects.php?id={id}`

Обновява информацията за съществуващ обект.

**Тяло на заявката (JSON):** (Същото като при POST)

### `DELETE /api/objects.php?id={id}`

Изтрива обект и всички асоциирани към него камери.

---

## 2. Камери (Cameras)

**Ендпойнт:** `/api/cameras.php`

### `GET /api/cameras.php`

Връща списък с всички камери.

### `GET /api/cameras.php?id={id}`

Връща информация за конкретна камера.

### `GET /api/cameras.php?object_id={object_id}`

Връща списък с всички камери, принадлежащи на конкретен обект.

### `POST /api/cameras.php`

Създава нова камера.

**Тяло на заявката (JSON):**
```json
{
    "object_id": 1,
    "name": "Име на камерата",
    "ip_address": "192.168.1.11",
    "username": "admin",
    "password": "password123",
    "model": "Модел на камера",
    "serial_number": "ABCDEF",
    "manufacturer": "Производител"
}
```

### `PUT /api/cameras.php?id={id}`

Обновява информацията за съществуваща камера.

**Тяло на заявката (JSON):** (Същото като при POST)

### `DELETE /api/cameras.php?id={id}`

Изтрива камера.

---

## 3. SMTP Настройки

**Ендпойнт:** `/api/smtp-settings.php`

### `GET /api/smtp-settings.php`

Връща текущите SMTP настройки. Паролата е маскирана.

### `POST /api/smtp-settings.php` (или `PUT`)

Създава или обновява SMTP настройките.

**Тяло на заявката (JSON):**
```json
{
    "smtp_host": "smtp.example.com",
    "smtp_port": 587,
    "smtp_username": "user@example.com",
    "smtp_password": "your_password",
    "smtp_encryption": "tls",
    "from_email": "noreply@example.com",
    "from_name": "NVR Monitor",
    "report_email": "admin@example.com",
    "is_active": true
}
```

---

## 4. Watchdog Настройки

**Ендпойнт:** `/api/watchdog-settings.php`

### `GET /api/watchdog-settings.php`

Връща текущите Watchdog настройки.

### `POST /api/watchdog-settings.php` (или `PUT`)

Създава или обновява Watchdog настройките.

**Тяло на заявката (JSON):**
```json
{
    "check_interval": 300,
    "enabled": true,
    "notify_on_offline": true,
    "notify_on_recovery": true
}
```

---

## 5. История на статуси (Status Logs)

**Ендпойнт:** `/api/status-logs.php`

### `GET /api/status-logs.php`

Връща списък с последните промени в статусите.

**Параметри в URL:**
- `limit` (число, по подразбиране 100): Брой записи за връщане.
- `device_type` (string, `object` или `camera`): Филтриране по тип устройство.
- `device_id` (число): Филтриране по ID на конкретно устройство.

**Пример:** `/api/status-logs.php?limit=50&device_type=camera`
