# Monitoring API Documentation

## Основной URL

```url
https://38.107.235.151
```

### Конечные точки

#### 1. Вход в систему

- **Метод:** POST
- **URL:** `/api/identity/login`

**Описание:**
Эта конечная точка используется для входа пользователя в систему. Пользователь должен предоставить имя пользователя и пароль, чтобы получить токен доступа.

**Запрос:**

```json
{
  "username": "root",
  "password": "123098zcb"
}
```

**Ответ:**

```json
{
  "id": "9f944c3b-cf11-4564-9a75-fa22cebb0c86",
  "username": "root",
  "role": "Manager",
  "accessToken": "eyJhbGciOiJodHRwOi8vd3d3Ln...EvaRT8perCGlyeOGSimChRTQ"
}
```

**Описание полей:**

- **username**: Имя пользователя.
- **password**: Пароль пользователя.
- **id**: Уникальный идентификатор пользователя.
- **role**: Роль пользователя в системе (`Administrator`, `Manager`, `Watcher`).
- **accessToken**: Токен доступа, используемый для авторизации в системе.

#### 2. Получение списка организаций

**Требуемая роль:** Manager

- **Метод:** GET
- **URL:** `/api/organizations`
- **Параметры:**
  - `skip`: 0
  - `take`: 10

**Описание:**
Эта конечная точка используется для получения списка организаций. Можно использовать параметры `skip` и `take` для пагинации.

**Ответ:**

```json
{
  "items": [
    {
      "id": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
      "name": "Организация по мониторингу УТО",
      "description": "Организация, занимающаяся мониторингом и обеспечением безопасности УТО"
    }
  ],
  "total": 1
}
```

**Описание полей:**

- **items**: Список организаций.
  - **id**: Уникальный идентификатор организации.
  - **name**: Название организации.
  - **description**: Описание организации.
- **total**: Общее количество организаций.
- **skip**: Количество пропущенных записей.
- **take**: Количество возвращаемых записей.

#### 3. Получение организации по ИД

**Требуемая роль:** Manager

- **Метод:** GET
- **URL:** `/api/organizations/{ИД организации}`

**Описание:**
Эта конечная точка используется для получения информации об организации по её уникальному идентификатору.

**Ответ:**

```json
{
  "id": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
  "name": "Организация по мониторингу УТО",
  "description": "Организация, осуществляющая мониторинг и контроль безопасности УТО"
}
```

**Описание полей:**

- **id**: Уникальный идентификатор организации.
- **name**: Название организации.
- **description**: Описание организации.

#### 4. Получение списка объектов в организации

**Требуемая роль:** Manager

- **Метод:** GET
- **URL:** `/api/assets`
- **Параметры:**
  - `organizationId`: Идентификатор организации.
  - `skip`: 0
  - `take`: 10

**Описание:**
Эта конечная точка используется для получения списка объектов в указанной организации. Можно использовать параметры `skip` и `take` для пагинации.

**Ответ:**

```json
{
  "items": [
    {
      "id": "8619da40-1ddd-4281-8362-d5696b776f91",
      "name": "СОШ №123",
      "description": "Средняя Образовательная Школа №123",
      "organizationId": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
      "groupId": null,
      "latitude": null,
      "longitude": null,
      "country": "Казахстан",
      "region": "",
      "city": "Павлодар",
      "street": "Нур-Султан",
      "house": "123",
      "building": "",
      "apartment": "",
      "gateCode": "",
      "intercomCode": "",
      "ownerName": "",
      "ownerPassword": "",
      "ownerPhone1": "",
      "ownerPhone2": "",
      "identificationPassword": "",
      "duressPassword": "",
      "hasAlarms": false
    }
  ],
  "total": 1
}
```

**Описание полей:**

- **organizationId**: Идентификатор организации, для которой необходимо получить список объектов.
- **items**: Список объектов.
  - **id**: Уникальный идентификатор объекта.
  - **name**: Название объекта.
  - **description**: Описание объекта.
  - **organizationId**: Идентификатор организации, к которой относится объект.
  - **groupId**: Идентификатор группы, если применимо.
  - **latitude**: Географическая широта объекта.
  - **longitude**: Географическая долгота объекта.
  - **country**: Страна, в которой расположен объект.
  - **region**: Регион объекта.
  - **city**: Город объекта.
  - **street**: Улица объекта.
  - **house**: Номер дома объекта.
  - **building**: Строение объекта.
  - **apartment**: Квартира объекта.
  - **gateCode**: Код ворот, если применимо.
  - **intercomCode**: Код домофона, если применимо.
  - **ownerName**: Имя владельца объекта.
  - **ownerPassword**: Пароль владельца объекта.
  - **ownerPhone1**: Телефон владельца объекта 1.
  - **ownerPhone2**: Телефон владельца объекта 2.
  - **identificationPassword**: Пароль для идентификации.
  - **duressPassword**: Пароль под принуждением.
  - **hasAlarms**: Указывает, есть ли тревоги на объекте.

#### 5. Создание объекта

**Требуемая роль:** Manager

- **Метод:** POST
- **URL:** `/api/assets`

**Описание:**
Эта конечная точка используется для создания нового объекта в указанной организации. Требуется указать идентификатор организации, а также данные объекта.

**Запрос:**

```json
{
  "id": "",
  "organizationId": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
  "name": "СОШ №123",
  "description": "Средняя Образовательная Школа №123",
  "latitude": null,
  "longitude": null,
  "groupId": null,
  "apartment": "",
  "building": "",
  "city": "Павлодар",
  "country": "Казахстан",
  "gateCode": "",
  "house": "123",
  "intercomCode": "",
  "ownerName": "",
  "ownerPassword": "",
  "ownerPhone1": "",
  "ownerPhone2": "",
  "region": "",
  "street": "Нур-Султан",
  "identificationPassword": "",
  "duressPassword": ""
}
```

**Ответ:**

```json
{
  "id": "8619da40-1ddd-4281-8362-d5696b776f91",
  "name": "СОШ №123",
  "description": "Средняя Образовательная Школа №123",
  "organizationId": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
  "groupId": null,
  "latitude": null,
  "longitude": null,
  "country": "Казахстан",
  "region": "",
  "city": "Павлодар",
  "street": "Нур-Султан",
  "house": "123",
  "building": "",
  "apartment": "",
  "gateCode": "",
  "intercomCode": "",
  "ownerName": "",
  "ownerPassword": "",
  "ownerPhone1": "",
  "ownerPhone2": "",
  "identificationPassword": "",
  "duressPassword": "",
  "hasAlarms": false
}
```

**Описание полей:**

- **id**: Уникальный идентификатор объекта. В запросе может быть пустым, в ответе генерируется системой.
- **organizationId**: Идентификатор организации, к которой относится объект.
- **name**: Название объекта.
- **description**: Описание объекта.
- **latitude**: Географическая широта объекта.
- **longitude**: Географическая долгота объекта.
- **groupId**: Идентификатор группы, если применимо.
- **apartment**: Квартира объекта.
- **building**: Строение объекта.
- **city**: Город объекта.
- **country**: Страна, в которой расположен объект.
- **gateCode**: Код ворот, если применимо.
- **house**: Номер дома объекта.
- **intercomCode**: Код домофона, если применимо.
- **ownerName**: Имя владельца объекта.
- **ownerPassword**: Пароль владельца объекта.
- **ownerPhone1**: Телефон владельца объекта 1.
- **ownerPhone2**: Телефон владельца объекта 2.
- **region**: Регион объекта.
- **street**: Улица объекта.
- **identificationPassword**: Пароль для идентификации.
- **duressPassword**: Пароль под принуждением.
- **hasAlarms**: Указывает, есть ли тревоги на объекте.

#### 6. Получение объекта по ИД

**Требуемая роль:** Manager

- **Метод:** GET
- **URL:** `/api/assets/8619da40-1ddd-4281-8362-d5696b776f91`

**Описание:**
Эта конечная точка используется для получения информации об объекте по его уникальному идентификатору.

**Ответ:**

```json
{
  "id": "8619da40-1ddd-4281-8362-d5696b776f91",
  "name": "СОШ №123",
  "description": "Средняя Образовательная Школа №123",
  "organizationId": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
  "groupId": null,
  "latitude": null,
  "longitude": null,
  "country": "Казахстан",
  "region": "",
  "city": "Павлодар",
  "street": "Нур-Султан",
  "house": "123",
  "building": "",
  "apartment": "",
  "gateCode": "",
  "intercomCode": "",
  "ownerName": "",
  "ownerPassword": "",
  "ownerPhone1": "",
  "ownerPhone2": "",
  "identificationPassword": "",
  "duressPassword": "",
  "hasAlarms": false
}
```

**Описание полей:**

- **id**: Уникальный идентификатор объекта.
- **name**: Название объекта.
- **description**: Описание объекта.
- **organizationId**: Идентификатор организации, к которой относится объект.
- **groupId**: Идентификатор группы, если применимо.
- **latitude**: Географическая широта объекта.
- **longitude**: Географическая долгота объекта.
- **country**: Страна, в которой расположен объект.
- **region**: Регион объекта.
- **city**: Город объекта.
- **street**: Улица объекта.
- **house**: Номер дома объекта.
- **building**: Строение объекта.
- **apartment**: Квартира объекта.
- **gateCode**: Код ворот, если применимо.
- **intercomCode**: Код домофона, если применимо.
- **ownerName**: Имя владельца объекта.
- **ownerPassword**: Пароль владельца объекта.
- **ownerPhone1**: Телефон владельца объекта 1.
- **ownerPhone2**: Телефон владельца объекта 2.
- **identificationPassword**: Пароль для идентификации.
- **duressPassword**: Пароль под принуждением.
- **hasAlarms**: Указывает, есть ли тревоги на объекте.

#### 7. Обновление объекта

**Требуемая роль:** Manager

- **Метод:** PUT
- **URL:** `/api/assets/8619da40-1ddd-4281-8362-d5696b776f91`

**Описание:**
Эта конечная точка используется для обновления данных объекта по его уникальному идентификатору. Требуется указать все обновляемые данные объекта.

**Запрос:**

```json
{
  "id": "8619da40-1ddd-4281-8362-d5696b776f91",
  "name": "Объект мониторинга УТО №12345",
  "description": "Средняя Образовательная Школа №123",
  "organizationId": "ff8adf69-3f8f-4d11-b244-6276e8d5d3b4",
  "groupId": null,
  "latitude": null,
  "longitude": null,
  "country": "Казахстан",
  "region": "",
  "city": "Павлодар",
  "street": "Нур-Султан",
  "house": "123",
  "building": "",
  "apartment": "",
  "gateCode": "",
  "intercomCode": "",
  "ownerName": "",
  "ownerPassword": "",
  "ownerPhone1": "",
  "ownerPhone2": "",
  "identificationPassword": "",
  "duressPassword": "",
  "hasAlarms": false
}
```

**Ответ:**
HTTP 204
