# ThermoLog API

## Daemon API

Токен передается так:

```http
Authorization: Bearer <token>
```

### GET /api/v1/me

Проверить токен.

### GET /api/v1/sensors

Получить датчики пользователя.

### POST /api/v1/measurements

Отправить один замер.

```json
{
  "sn": "28FF641D931603A1",
  "temp": 23.45,
  "timestamp": "2026-07-07T13:20:00Z"
}
```

### POST /api/v1/measurements/batch

Отправить пачку замеров.

```json
{
  "measurements": [
    {"sn": "28FF641D931603A1", "temp": 23.45},
    {"sn": "28FF641D931603A2", "temp": 21.10}
  ]
}
```

### GET /api/v1/sensors/{id}/measurements

Параметры: `from`, `to`, `bucket`.

`bucket`: `raw`, `minute`, `5min`, `15min`, `hour`, `day`.

### PATCH /api/v1/sensors/{id}

```json
{
  "alias": "Комната",
  "compensation": -0.3
}
```

### DELETE /api/v1/sensors/{id}

Удалить датчик.

## Mobile API

База: `/api/mobile/v1`.

### GET /api/mobile/v1/bootstrap

Публичная конфигурация для Android-клиента: имя приложения, ссылки, доступные провайдеры входа, callback URL.

### POST /api/mobile/v1/auth/yandex

Обменять Yandex OAuth code на внутренний Bearer token ThermoLog.

```json
{
  "code": "oauth-code-from-yandex",
  "code_verifier": "pkce-code-verifier",
  "redirect_uri": "thermolog://auth/yandex"
}
```

Ответ:

```json
{
  "data": {
    "token": "th_live_...",
    "token_type": "Bearer",
    "user": {
      "id": 1,
      "email": "user@example.com",
      "name": "User"
    }
  }
}
```

### GET /api/mobile/v1/me

Профиль текущего пользователя.

### GET /api/mobile/v1/dashboard

Сводка для главного экрана мобильного приложения: пользователь, количество датчиков, количество онлайн-датчиков и список датчиков.

### GET /api/mobile/v1/sensors

Список датчиков.

### GET /api/mobile/v1/sensors/{id}/measurements

История измерений для графика в мобильном приложении. Параметры такие же: `from`, `to`, `bucket`.
