Политики хранения
Квоты, занятое место, политики хранения, их предпросмотр и запуск, очистка и удаление артефактов.
Операции этой группы с правилом доступа, правилом повтора, параметрами и ответами. Каждый запрос несёт ключ: Authorization: Bearer <ключ> (см. «Аутентификация»).
Операции
Проверить, можно ли удалить артефакт
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/deletion
Доступ: Право в репозитории: artifact.delete · Повтор: Можно повторять (чтение)
Возвращает имя артефакта, размер, время публикации, текущую annotationRevision и blockers, которые не дают его удалить: reference (внешняя ссылка или использование образом контейнера, Git LFS или npm), asset_history (текущая или прежняя ревизия пути файла), attachment_history или promotion_stage. Ничего не меняется; передайте ревизию в deleteArtifact как expectedAnnotationRevision.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
id | путь | string (uuid) | да | — |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
id | string (uuid) | да | — |
name | string | да | 1–240 символов |
size | string | да | целое число десятичными цифрами, передаётся строкой |
publishedAt | string (date-time) | да | — |
annotationRevision | integer | да | 0–2147483647 |
blockers | массив string | да | не больше 4 элементов; без повторов; каждый элемент: одно из reference, asset_history, attachment_history, protected_label, promotion_stage |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/deletion" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Просмотреть кандидатов на удаление по правилам хранения
POST /api/v1/repositories/{repository}/retention/preview
Доступ: Право в репозитории: artifact.delete · Повтор: Можно повторять (чтение)
Перечисляет опубликованные артефакты, выпущенные до criteria.publishedBefore (момент в прошлом по UTC с миллисекундами), в порядке ID, каждый с ревизией аннотаций и препятствиями удалению (blockers); protected_label означает одну из criteria.protectedLabels (явный список до 32 меток). Страницы содержат limit элементов (1–100, по умолчанию 50); продолжайте с after, равным next. Ничего не резервируется: выберите элементы для удаления и передайте их с ревизиями в applyRetention, который проверит их заново.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
criteria | object | да | — |
criteria.publishedBefore | string (date-time) | да | по шаблону ^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$ |
criteria.protectedLabels | массив string | да | не больше 32 элементов; без повторов; каждый элемент: 1–64 символов |
limit | integer | нет | 1–100 |
after | string (uuid) | нет | — |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
items | массив object | да | не больше 100 элементов |
items[].id | string (uuid) | да | — |
items[].name | string | да | 1–240 символов |
items[].size | string | да | целое число десятичными цифрами, передаётся строкой |
items[].publishedAt | string (date-time) | да | — |
items[].annotationRevision | integer | да | 0–2147483647 |
items[].blockers | массив string | да | не больше 4 элементов; без повторов; каждый элемент: одно из reference, asset_history, attachment_history, protected_label, promotion_stage |
next | string (uuid) | да | может быть null |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/retention/preview" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"criteria":{"publishedBefore":"2026-01-01T00:00:00.000Z","protectedLabels":[]}}'Удалить выбранных кандидатов по правилам хранения
POST /api/v1/repositories/{repository}/retention/apply
Доступ: Право в репозитории: artifact.delete · Повтор: Можно повторять: тот же запрос даёт тот же результат
Заново проверяет 1–100 артефактов, выбранных из previewRetention (items с id и expectedAnnotationRevision), по тем же criteria и логически удаляет подходящие одной транзакцией. Для каждого элемента возвращается outcome: deleted, already_deleted, changed (аннотации изменились), not_eligible (опубликован слишком поздно), protected с препятствиями или not_found. Байты остаются зарезервированными, пока их не освободит физическая очистка репозитория.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
criteria | object | да | — |
criteria.publishedBefore | string (date-time) | да | по шаблону ^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$ |
criteria.protectedLabels | массив string | да | не больше 32 элементов; без повторов; каждый элемент: 1–64 символов |
items | массив object | да | 1–100 элементов |
items[].id | string (uuid) | да | — |
items[].expectedAnnotationRevision | integer | да | 0–2147483647 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
items | массив object | да | 1–100 элементов |
items[].id | string (uuid) | да | — |
items[].outcome | string | да | одно из deleted, already_deleted, protected, changed, not_eligible, not_found |
items[].blockers | массив string | да | не больше 4 элементов; без повторов; каждый элемент: одно из reference, asset_history, attachment_history, protected_label, promotion_stage |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/retention/apply" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"criteria":{"publishedBefore":"2026-01-01T00:00:00.000Z","protectedLabels":[]},"items":[{"id":"00000000-0000-4000-8000-000000000000","expectedAnnotationRevision":0}]}'Получить политику хранения
GET HEAD /api/v1/repositories/{repository}/storage/policy
Доступ: Право в репозитории: storage.read · Повтор: Можно повторять (чтение)
Возвращает настройки автоматического удаления сборок и квоты репозитория с их revision, следующий и последний запланированный запуск, число сборок, удалённых последним запуском, и его ошибку. По умолчанию политика выключена и квоты репозитория нет (общесерверная ёмкость при этом действует).
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.grouping | string | да | одно из package-channel, package, repository |
policy.keepLast | integer | да | 1–100000 |
policy.channels | массив object | да | не больше 32 элементов |
policy.channels[].label | string | да | 1–64 символов |
policy.channels[].keepLast | integer | да | 1–100000 |
policy.protectedLabels | массив string | да | не больше 32 элементов; без повторов; каждый элемент: 1–64 символов |
policy.minAgeHours | integer | да | 0–87600 |
policy.intervalMinutes | integer | да | 1–10080 |
policy.quotaBytes | string | да | целое число десятичными цифрами, передаётся строкой; может быть null |
policy.warningPercent | integer | да | 1–98 |
policy.criticalPercent | integer | да | 2–99 |
nextRunAt | string (date-time) | да | может быть null |
lastRunAt | string (date-time) | да | может быть null |
lastDeleted | integer | да | 0–100 |
lastError | string | да | не длиннее 64 символов; может быть null |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Заменить политику хранения
PUT /api/v1/repositories/{repository}/storage/policy
Доступ: Право в репозитории: storage.manage · Повтор: Повтор только с ожидаемой ревизией (compare-and-swap)
Заменяет политику целиком: хранить последние keepLast зарегистрированных сборок UPack на пакет, на метку канала (channels) или на репозиторий (grouping), никогда не удалять protectedLabels и сборки моложе minAgeHours, запускаться каждые intervalMinutes и ограничивать репозиторий значением quotaBytes (десятичная строка, null — без ограничения) с порогами предупреждения. expectedRevision должна быть текущей ревизией, иначе 409 revision_mismatch. Включение требует также artifact.delete и привязывает расписание к вызывающему управляемому ключу: когда этот ключ отозван, истёк или лишился этих прав, плановое удаление останавливается, пока политику не сохранят другим ключом. Обычные файлы учитываются в квоте, но по ней никогда не удаляются.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
expectedRevision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.grouping | string | да | одно из package-channel, package, repository |
policy.keepLast | integer | да | 1–100000 |
policy.channels | массив object | да | не больше 32 элементов |
policy.channels[].label | string | да | 1–64 символов |
policy.channels[].keepLast | integer | да | 1–100000 |
policy.protectedLabels | массив string | да | не больше 32 элементов; без повторов; каждый элемент: 1–64 символов |
policy.minAgeHours | integer | да | 0–87600 |
policy.intervalMinutes | integer | да | 1–10080 |
policy.quotaBytes | string | да | целое число десятичными цифрами, передаётся строкой; может быть null |
policy.warningPercent | integer | да | 1–98 |
policy.criticalPercent | integer | да | 2–99 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.grouping | string | да | одно из package-channel, package, repository |
policy.keepLast | integer | да | 1–100000 |
policy.channels | массив object | да | не больше 32 элементов |
policy.channels[].label | string | да | 1–64 символов |
policy.channels[].keepLast | integer | да | 1–100000 |
policy.protectedLabels | массив string | да | не больше 32 элементов; без повторов; каждый элемент: 1–64 символов |
policy.minAgeHours | integer | да | 0–87600 |
policy.intervalMinutes | integer | да | 1–10080 |
policy.quotaBytes | string | да | целое число десятичными цифрами, передаётся строкой; может быть null |
policy.warningPercent | integer | да | 1–98 |
policy.criticalPercent | integer | да | 2–99 |
nextRunAt | string (date-time) | да | может быть null |
lastRunAt | string (date-time) | да | может быть null |
lastDeleted | integer | да | 0–100 |
lastError | string | да | не длиннее 64 символов; может быть null |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"policy":{"enabled":false,"grouping":"package-channel","keepLast":1,"channels":[],"protectedLabels":[],"minAgeHours":0,"intervalMinutes":1,"quotaBytes":"1024","warningPercent":1,"criticalPercent":2}}'Получить использование хранилища репозитория
GET HEAD /api/v1/repositories/{repository}/storage/usage
Доступ: Право в репозитории: storage.read · Повтор: Можно повторять (чтение)
Возвращает байты, зарезервированные репозиторием, десятичными строками: опубликованные, в незавершённых загрузках и выведенные из оборота (удалённые или отменённые, ещё не освобождённые), их сумму reservedBytes, квоту и состояние state (unlimited, normal, warning, critical, exceeded). Это логическое резервирование, учитываемое в квоте, а не занятое место на диске.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
publishedBytes | string | да | целое число десятичными цифрами, передаётся строкой |
pendingBytes | string | да | целое число десятичными цифрами, передаётся строкой |
retiredBytes | string | да | целое число десятичными цифрами, передаётся строкой |
reservedBytes | string | да | целое число десятичными цифрами, передаётся строкой |
quotaBytes | string | да | целое число десятичными цифрами, передаётся строкой; может быть null |
state | string | да | одно из unlimited, normal, warning, critical, exceeded |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/usage" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Просмотреть, что удалит политика хранения
GET HEAD /api/v1/repositories/{repository}/storage/preview
Доступ: Право в репозитории: artifact.delete · Повтор: Можно повторять (чтение)
Возвращает до 100 зарегистрированных сборок, которые сохранённая политика удалила бы сейчас (даже если она выключена), с revision политики и hasMore; сборки, защищённые ссылками, путями файлов, вложениями, защищёнными метками или возрастом, в список не входят. Ничего не резервируется: запуск ранжирует сборки заново.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
items | массив object | да | не больше 100 элементов |
items[].id | string (uuid) | да | — |
items[].name | string | да | не длиннее 240 символов |
items[].size | string | да | целое число десятичными цифрами, передаётся строкой |
items[].publishedAt | string (date-time) | да | — |
items[].annotationRevision | integer | да | 0–2147483647 |
items[].blockers | массив string | да | не больше 0 элементов |
hasMore | boolean | да | — |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/preview" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Запустить политику хранения сейчас
POST /api/v1/repositories/{repository}/storage/run
Доступ: Право в репозитории: storage.manage, artifact.delete · Повтор: Не повторять автоматически
Сразу выполняет одну пачку включённой политики, не дожидаясь расписания: заново ранжирует сборки, проверяет права и зависимости и логически удаляет до 100, возвращая результат по каждой. expectedRevision должна быть текущей ревизией политики, а политика — включена, иначе 409. Байты освобождаются позже физической очисткой репозитория, у которой своя политика (setCleanup).
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
expectedRevision | integer | да | 0–2147483647 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
items | массив object | да | не больше 100 элементов |
items[].id | string (uuid) | да | — |
items[].outcome | string | да | одно из deleted, already_deleted, protected, changed, not_eligible, not_found |
items[].blockers | массив string | да | не больше 4 элементов; каждый элемент: одно из reference, asset_history, attachment_history, protected_label, promotion_stage |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/run" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0}'Перечислить события хранилища репозитория
GET HEAD /api/v1/repositories/{repository}/storage/events
Доступ: Право в репозитории: diagnostics.read · Повтор: Можно повторять (чтение)
Возвращает от старых к новым до 100 диагностических событий политик хранения, квот, правил хранения и очистки после номера after (по умолчанию 0), каждое с уровнем, кодом и несколькими подробностями; level (info, warning, error) фильтрует их, продолжайте с after, равным next. Хранятся только новейшие 1000 событий на репозиторий и 20 000 всего, поэтому для более долгого хранения экспортируйте их.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
after | запрос | string | нет | целое число десятичными цифрами, передаётся строкой |
level | запрос | string | нет | одно из info, warning, error |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
items | массив object | да | не больше 100 элементов |
items[].sequence | string | да | целое число десятичными цифрами, передаётся строкой |
items[].occurredAt | string (date-time) | да | — |
items[].level | string | да | одно из info, warning, error |
items[].code | string | да | не длиннее 96 символов |
items[].details | словарь string | integer | да | не больше 16 записей |
next | string | да | целое число десятичными цифрами, передаётся строкой; может быть null |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/events" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Получить настройки физической очистки
GET HEAD /api/v1/repositories/{repository}/storage/cleanup
Доступ: Право в репозитории: storage.read · Повтор: Можно повторять (чтение)
Возвращает политику физической очистки репозитория с её revision (enabled, graceHours, batchSize, intervalSeconds, delayMilliseconds), последний и следующий запуск, а также сколько объектов последняя пачка освободила, отложила или не смогла обработать и сколько байтов освобождено. Очистка физически удаляет отменённые загрузки и удалённые артефакты; по умолчанию она выключена.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.graceHours | integer | да | 0–8760 |
policy.batchSize | integer | да | 1–100 |
policy.intervalSeconds | integer | да | 5–86400 |
policy.delayMilliseconds | integer | да | 0–1000 |
lastRunAt | string (date-time) | да | может быть null |
nextRunAt | string (date-time) | да | может быть null |
lastCollected | integer | да | 0–100 |
lastDeferred | integer | да | 0–100 |
lastFailed | integer | да | 0–100 |
lastReclaimedBytes | string | да | целое число десятичными цифрами, передаётся строкой |
lastError | string | да | может быть null |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Настроить физическую очистку
PUT /api/v1/repositories/{repository}/storage/cleanup
Доступ: Право в репозитории: storage.manage · Повтор: Повтор только с ожидаемой ревизией (compare-and-swap)
Заменяет политику очистки на работающем сервере: enabled (также для приостановки), graceHours (0–8760, сколько часов удалённое содержимое лежит до удаления), batchSize (1–100 объектов), intervalSeconds (5–86400) и delayMilliseconds (0–1000 между объектами). expectedRevision должна быть текущей ревизией (0 до первого изменения), иначе 409 revision_mismatch. Изменение вступает в силу между объектами, но никогда посреди обработки объекта.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
expectedRevision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.graceHours | integer | да | 0–8760 |
policy.batchSize | integer | да | 1–100 |
policy.intervalSeconds | integer | да | 5–86400 |
policy.delayMilliseconds | integer | да | 0–1000 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.graceHours | integer | да | 0–8760 |
policy.batchSize | integer | да | 1–100 |
policy.intervalSeconds | integer | да | 5–86400 |
policy.delayMilliseconds | integer | да | 0–1000 |
lastRunAt | string (date-time) | да | может быть null |
nextRunAt | string (date-time) | да | может быть null |
lastCollected | integer | да | 0–100 |
lastDeferred | integer | да | 0–100 |
lastFailed | integer | да | 0–100 |
lastReclaimedBytes | string | да | целое число десятичными цифрами, передаётся строкой |
lastError | string | да | может быть null |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"policy":{"enabled":false,"graceHours":0,"batchSize":1,"intervalSeconds":5,"delayMilliseconds":0}}'Запросить пачку очистки сейчас
POST /api/v1/repositories/{repository}/storage/cleanup/run
Доступ: Право в репозитории: storage.manage · Повтор: Не повторять автоматически
Планирует немедленный запуск следующей пачки включённой политики очистки; ответ — состояние очистки, а байты освобождаются только после выполнения пачки (см. lastRunAt в getCleanup). expectedRevision должна быть текущей ревизией; выключенная очистка — 409 state_conflict. Объекты, которые читаются или записываются, откладываются до следующей пачки.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Тело запроса (application/json)
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
expectedRevision | integer | да | 0–2147483647 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
revision | integer | да | 0–2147483647 |
policy | object | да | — |
policy.enabled | boolean | да | — |
policy.graceHours | integer | да | 0–8760 |
policy.batchSize | integer | да | 1–100 |
policy.intervalSeconds | integer | да | 5–86400 |
policy.delayMilliseconds | integer | да | 0–1000 |
lastRunAt | string (date-time) | да | может быть null |
nextRunAt | string (date-time) | да | может быть null |
lastCollected | integer | да | 0–100 |
lastDeferred | integer | да | 0–100 |
lastFailed | integer | да | 0–100 |
lastReclaimedBytes | string | да | целое число десятичными цифрами, передаётся строкой |
lastError | string | да | может быть null |
Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Пример
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup/run" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0}'