Перейти к основному содержимому

# Плановая очистка Lite

BAF Lite предоставляет возможность очистки данных — как по заданному расписанию, так и в ручном режиме по конкретной дате. В результате удаляются как сами попытки (endeavor), так и связанные с ними биометрические данные.

Очистка работает в разрезе агрегаций и настраивается для каждой из них независимо. Это означает, что для разных агрегаций могут быть установлены различные планы очистки. Каждая попытка создаётся в рамках определённой агрегации. В BAF Lite используется агрегация с идентификатором `28608d66-a571-44ec-94db-04a00143ff51`.

Ручная очистка позволяет удалить все данные, созданные ранее указанного момента времени, который задаётся при вызове процедуры. Плановая очистка позволяет настроить автоматическое удаление данных по расписанию, срабатывающее через определённые промежутки времени (например, в конце квартала, месяца, недели и т. д.).

примечание

Подробнее о том как настроить работу процедур выполнения очистки вы можете прочитать в разделе настройки очистки.

# API для работы с настройками очитки.

Настройки очистки содержат в себе данные, которые используется для проведения очисток. Эти настройки являются входным идентификатором для проведения всех операций связанных с очисткой данных по определённой аггрегации. Настройки создаются для аггрегации и используют её id. Для настройки BAF Lite необходимо использовать следующую агрегацию: `28608d66-a571-44ec-94db-04a00143ff51`.

## Создание объекта настроек очистки​

Данный запрос создаёт объект настроек очистки для указанной агрегации. Для одной агрегации может существовать только один активный объект настроек.

Схема запроса: `POST /lrs/settings?aggregate_entity=<aggregate_id>`

### Пример запроса​

    curl -X 'POST' \
      'http://192.168.10.1/lrs/settings?aggregate_entity=28608d66-a571-44ec-94db-04a00143ff51' \
      -H 'accept: application/json' \
      -H 'token: token' \
      -H 'Content-Type: application/json' \
      -d '{
      "retention_settings": {
        "enable": true,
        "content_retention": 1,
        "content_retention_dimension": "days",
        "execution_cron": "* 1 1 * *"
      }
    }'

### Параметры запроса (query)​

Параметр | Описание
--- | ---
`aggregate_entity` | Идентификатор агрегации, для которой создаются настройки очистки. Обязательный.

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.

### Параметры тела запроса (application/json)​

Тело запроса должно содержать объект `retention_settings` со следующими полями:

Поле | Описание
--- | ---
`enable` | Включает или отключает плановую очистку. Тип `bool` Обязательный.
`content_retention` | Срок хранения данных, выраженный в единицах, указанных в `content_retention_dimension`. Данные, созданные ранее чем `(время запуска очистки по расписанию - content_retention)`, будут удалены. Тип `int` Обязательный.
`content_retention_dimension` | Единица измерения срока хранения. Допустимые значения: `"seconds"`, `"minutes"`, `"hours"`, `"days"`, `"weeks"`. Обязательный.
`execution_cron` | Расписание запуска процедуры очистки в формате cron (например, `* 1 1 * *` — каждый первое число месяца в 1:00 ). Тип `string` Обязательный.

### Пример тела запроса​

    {
      "retention_settings": {
        "enable": true,
        "content_retention": 1,
        "content_retention_dimension": "days",
        "execution_cron": "* 1 1 * *"
      }
    }

## Обновление объекта настроек очистки​

Данный запрос обновляет существующий объект настроек очистки для указанной агрегации.

Схема запроса: `PUT /lrs/settings?aggregate_entity=<aggregate_id>`

### Пример запроса​

    curl -X 'PUT' \
      'http://192.168.10.1/lrs/settings?aggregate_entity=28608d66-a571-44ec-94db-04a00143ff51' \
      -H 'accept: application/json' \
      -H 'token: token' \
      -H 'Content-Type: application/json' \
      -d '{
      "retention_settings": {
        "enable": true,
        "content_retention": 1,
        "content_retention_dimension": "days",
        "execution_cron": "* 1 1 * *"
      }
    }'

### Параметры запроса (query)​

Параметр | Описание
--- | ---
`aggregate_entity` | Идентификатор агрегации, настройки которой обновляются. Обязательный.

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.

### Параметры тела запроса (application/json)​

Тело запроса содержит объект `retention_settings` со следующими полями:

Поле | Описание
--- | ---
`enable` | Включает или отключает плановую очистку. Тип `bool` Обязательный.
`content_retention` | Срок хранения данных, выраженный в единицах, указанных в `content_retention_dimension`. Данные, созданные ранее чем `(время запуска очистки по расписанию - content_retention)`, будут удалены. Тип `int` Обязательный.
`content_retention_dimension` | Единица измерения срока хранения. Допустимые значения: `"seconds"`, `"minutes"`, `"hours"`, `"days"`, `"weeks"`. Обязательный.
`execution_cron` | Расписание запуска процедуры очистки в формате cron (например, `* 1 1 * *` — каждый первое число месяца в 1:00 ). Тип `string` Обязательный.

### Пример тела запроса​

    {
      "retention_settings": {
        "enable": true,
        "content_retention": 1,
        "content_retention_dimension": "days",
        "execution_cron": "* 1 1 * *"
      }
    }

## Получение объекта настроек очистки​

Данный запрос возвращает ранее созданные настройки очистки для указанной агрегации.

Схема запроса: `GET /lrs/settings?aggregate_entity=<aggregate_id>`

### Пример запроса​

    curl -X 'GET' \
      'http://192.168.10.1/lrs/settings?aggregate_entity=28608d66-a571-44ec-94db-04a00143ff51' \
      -H 'accept: application/json' \
      -H 'token: token'

### Параметры запроса (query)​

Параметр | Описание
--- | ---
`aggregate_entity` | Идентификатор агрегации, для которой запрашиваются настройки очистки. Обязательный.

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.

### Пример ответа​

При успешном выполнении возвращается статус `200 OK` и объект с настройками очистки:

    {
      "retention_settings": {
        "enable": true,
        "content_retention": 1,
        "content_retention_dimension": "days",
        "execution_cron": "* 1 1 * *"
      }
    }

# API для работы с мануальной очитской и результатми очистки.

## Получение результатов очистки​

Данный запрос возвращает результаты последней выполненной очистки для всех агрегаций, для которых были созданы настройки. Результаты содержат статус очистки, а также дату, относительно которой она выполнялась. Если очистка выполняется в текущий момент, статус отобразит это состояние.

Схема запроса: `GET /lrs/retention/metrics`

### Пример запроса​

    curl -X 'GET' \
      'http://192.168.10.1/lrs/retention/metrics' \
      -H 'accept: application/json' \
      -H 'token: token'

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.

### Пример ответа​

При успешном выполнении возвращается статус `200 OK` и объект, где ключом является идентификатор агрегации, а значением - объект с результатами очистки:

    {
      "28608d66-a571-44ec-94db-04a00143ff51": {
        "result": {
          "exception": null
        },
        "status": 1,
        "planned_retention_date": "2026-06-29T11:10:15.843710+00:00",
        "actual_retention_date": "2026-06-29T10:56:00+00:00",
        "last_modified": "2026-06-29T11:10:15.843715+00:00"
      }
    }

### Структура ответа​

Поле | Описание
--- | ---
`result` | Объект, содержащий информацию о результате очистки. В текущей версии содержит поле `exception` с данными об ошибке, если таковая произошла.
`status` | Статус очистки. Возможные значения: `0` — очистка выполняется в данный момент; `1` — очистка завершена успешно; `2` — в процессе очистки произошла ошибка.
`planned_retention_date` | Плановое время запуска предыдущей очистки (согласно расписанию).
`actual_retention_date` | Фактическая дата, относительно которой выполнялась очистка. Все попытки, созданные ранее этой даты, были удалены.
`last_modified` | Время последнего обновления записи о результатах очистки.

## Получение следующего времени плановой очистки​

Данный запрос возвращает дату и время следующего запуска очистки по расписанию для указанной агрегации.

примечание

Чтобы получить время следующей плановой очистки для только что созданного объекта настроек, необходимо дождаться первого запуска внутренней процедуры проверки расписания очистки. Подробнее см. в разделе настройки очистки.

Схема запроса: `GET /lrs/retention/retention_time/<aggregate_id>`

### Пример запроса​

    curl -X 'GET' \
      'http://192.168.10.1/lrs/retention/retention_time/28608d66-a571-44ec-94db-04a00143ff51' \
      -H 'accept: application/json' \
      -H 'token: token'

### Параметры запроса (path)​

Параметр | Описание
--- | ---
`aggregate_id` | Идентификатор агрегации, для которой запрашивается время следующей очистки. Обязательный.

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.

### Пример ответа​

    "2026-08-01T01:00:00+00:00"

## Запуск ручной очистки данных​

Данный запрос инициирует ручную очистку данных, удаляя все попытки, созданные ранее указанной даты.

Схема запроса: `POST /lrs/retention/priority_execution/<aggregate_id>?priority_date=<priority_date>&execute_as_planned=false`

### Пример запроса​

    curl -X 'POST' \
      'https://baf.3divi.ru/lrs/retention/priority_execution/28608d66-a571-44ec-94db-04a00143ff51?priority_date=2022-08-01T01%3A00%3A00%2B00%3A00&execute_as_planned=false' \
      -H 'accept: application/json' \
      -H 'token: token'

### Параметры запроса (query)​

Параметр | Описание
--- | ---
`aggregate_id` | Идентификатор агрегации, для которой выполняется ручная очистка. Обязательный.
`priority_date` | Дата, ранее которой все попытки будут удалены. Обязательный.
`execute_as_planned` | Служебный параметр. Должен всегда иметь значение `false`. Обязательный.

### Заголовки запроса​

Заголовок | Описание
--- | ---
`token` | Токен сервиса `video-recorder`. Хранится в секрете `video-recorder-token` в файле `./cfg/video-recorder.secrets.json`. Обязательный.