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

Резервные копии ​

Состояние, план, запуски, точки, проверка и хранение копий встроенного агента.

Операции этой группы с правилом доступа, правилом повтора, параметрами и ответами. Каждый запрос несёт ключ: Authorization: Bearer <ключ> (см. «Аутентификация»).

Операции ​

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

GET HEAD /api/v1/backup/status

Доступ: Системное право backup.read · Повтор: Можно повторять (чтение)

Сводка по системе резервного копирования: хранилище копий (configured, available, свободные и общие байты), агент резервного копирования (online, последний heartbeat, версия), план, новейшая завершённая точка, следующий плановый запуск, выполняющееся задание и warnings — каждое с кодом вроде agent_offline или backup_stale и серьёзностью warning или critical. Пока агент не в сети, хранилище считается недоступным. Путей и секретов в ответе нет.

Ответ 200

ПолеТипОбязателенПравила
vaultobjectда—
vault.configuredbooleanда—
vault.idstring (uuid)даможет быть null
vault.availablebooleanда—
vault.encryptedbooleanдаможет быть null; Хранилище зашифровано; null, если неизвестно или не подключено.
vault.freeBytesstringдацелое число десятичными цифрами, передаётся строкой; может быть null
vault.totalBytesstringдацелое число десятичными цифрами, передаётся строкой; может быть null
agentobjectда—
agent.onlinebooleanда—
agent.lastSeenAtstring (date-time)даможет быть null
agent.versionstringдане длиннее 64 символов; может быть null
planobjectда—
plan.enabledbooleanда—
plan.hourintegerда0–23
plan.minuteintegerда0–59
plan.timezonestringда1–64 символов; Явный часовой пояс IANA, например Europe/Moscow; проверяется сервером.
plan.retentionobjectда—
plan.retention.dailyintegerда0–366
plan.retention.weeklyintegerда0–260
plan.retention.monthlyintegerда0–120
plan.revisionintegerда0–2147483647
lastCompletedobjectдаможет быть null
lastCompleted.idstring (uuid)да—
lastCompleted.snapshotAtstring (date-time)даВремя снимка T; возраст точки отсчитывается от T.
lastCompleted.completedAtstring (date-time)да—
lastCompleted.blobsintegerдане меньше 0
lastCompleted.contentBytesstringдацелое число десятичными цифрами, передаётся строкой
lastCompleted.newBytesstringдацелое число десятичными цифрами, передаётся строкой; Байты, которые эта точка добавила в хранилище копий.
lastCompleted.tablesintegerдане меньше 0
lastCompleted.rowsintegerдане меньше 0
lastCompleted.pinnedbooleanда—
lastCompleted.verifiedAtstring (date-time)даможет быть null
lastCompleted.verifyDepthstringдаодно из structural, deep, null; может быть null
lastCompleted.verifyErrorstringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
nextRunAtstring (date-time)даможет быть null
runningobjectдаможет быть null
running.idstring (uuid)да—
running.kindstringдаодно из capture, verify, retention
running.statestringдаодно из queued, running, committing, completed, failed, interrupted
running.phasestringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
running.startedAtstring (date-time)даНачало выполнения или время запроса, пока задание в очереди.
running.finishedAtstring (date-time)даможет быть null
running.errorCodestringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
running.pointIdstring (uuid)даможет быть null
running.progressobjectда—
running.progress.bytesCopiedstringдацелое число десятичными цифрами, передаётся строкой; Обработанные байты: скопированные или уже находящиеся в хранилище копий.
running.progress.bytesTotalstringдацелое число десятичными цифрами, передаётся строкой
running.progress.blobsCopiedintegerдане меньше 0
running.progress.blobsTotalintegerдане меньше 0
warningsмассив objectдане больше 10 элементов
warnings[].codestringдаодно из vault_not_configured, agent_offline, schedule_disabled, no_backup_yet, backup_stale, last_run_failed, vault_unavailable, vault_low_space, verify_failed, never_deep_verified
warnings[].severitystringдаодно из warning, critical

Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507

Пример

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/status" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Получить план резервного копирования ​

GET HEAD /api/v1/backup/plan

Доступ: Системное право backup.read · Повтор: Можно повторять (чтение)

Возвращает ежедневное расписание (enabled, hour и minute в часовом поясе timezone из базы IANA) и политику хранения (сколько точек daily, weekly, monthly оставлять) с revision, которую нужно передать в updateBackupPlan. Пока план не менялся, он выключен, с расписанием 02:00 UTC и 7 ежедневными, 4 еженедельными и 6 ежемесячными точками.

Ответ 200

ПолеТипОбязателенПравила
enabledbooleanда—
hourintegerда0–23
minuteintegerда0–59
timezonestringда1–64 символов; Явный часовой пояс IANA, например Europe/Moscow; проверяется сервером.
retentionobjectда—
retention.dailyintegerда0–366
retention.weeklyintegerда0–260
retention.monthlyintegerда0–120
revisionintegerда0–2147483647

Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507

Пример

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/plan" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Заменить план резервного копирования ​

PUT /api/v1/backup/plan

Доступ: Системное право backup.manage · Повтор: Повтор только с ожидаемой ревизией (compare-and-swap)

Заменяет план целиком: enabled, hour (0–23), minute (0–59), timezone и retention (не более 366 ежедневных, 260 еженедельных, 120 ежемесячных) должны быть заданы все. expectedRevision должна быть текущей ревизией, иначе 409 revision_mismatch; недопустимое поле — 400 с указателем JSON Pointer в details. Агент переходит на новое расписание со своей следующей проверки.

Тело запроса (application/json)

ПолеТипОбязателенПравила
expectedRevisionintegerда0–2147483647
enabledbooleanда—
hourintegerда0–23
minuteintegerда0–59
timezonestringда1–64 символов; Явный часовой пояс IANA, например Europe/Moscow; проверяется сервером.
retentionobjectда—
retention.dailyintegerда0–366
retention.weeklyintegerда0–260
retention.monthlyintegerда0–120

Ответ 200

ПолеТипОбязателенПравила
enabledbooleanда—
hourintegerда0–23
minuteintegerда0–59
timezonestringда1–64 символов; Явный часовой пояс IANA, например Europe/Moscow; проверяется сервером.
retentionobjectда—
retention.dailyintegerда0–366
retention.weeklyintegerда0–260
retention.monthlyintegerда0–120
revisionintegerда0–2147483647

Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Пример

bash
curl -X PUT "$ARKVORY_URL/api/v1/backup/plan" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"enabled":false,"hour":0,"minute":0,"timezone":"<timezone>","retention":{"daily":0,"weekly":0,"monthly":0}}'

Запросить резервное копирование сейчас ​

POST /api/v1/backup/runs

Доступ: Системное право backup.manage · Повтор: Можно повторять с тем же Idempotency-Key

Ставит агенту резервного копирования задание на снятие копии вне расписания и возвращает 202 с заданием (kind равно capture); агент выполняет его, затем проверку и очистку по правилам хранения. Idempotency-Key обязателен: повтор от того же вызывающего возвращает то же задание. Следите за заданием через listBackupJobs. Одновременно может быть открыто не более 100 запросов на резервное копирование (507 queue_full); пока ни один агент не в сети, задание ждёт.

Параметры

ИмяГдеТипОбязателенПравила
Idempotency-Keyзаголовокstringдапо шаблону ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

Ответ 202

ПолеТипОбязателенПравила
idstring (uuid)да—
kindstringдаодно из capture, verify, retention
statestringдаодно из queued, running, committing, completed, failed, interrupted

Ответы: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

Пример

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/runs" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Перечислить задания резервного копирования ​

GET HEAD /api/v1/backup/jobs

Доступ: Системное право backup.read · Повтор: Можно повторять (чтение)

Перечисляет задания снятия копии (capture), проверки (verify) и применения правил хранения (retention) от новых к старым, каждое с состоянием state (queued, running, committing, completed, failed, interrupted), phase, временем, errorCode, полученной точкой и progress (обработанные байты и объекты). Страницы содержат limit заданий (1–100, по умолчанию 50); продолжайте с after, равным next.

Параметры

ИмяГдеТипОбязателенПравила
afterзапросstringнетпо шаблону ^[0-9]{1,17}_[0-9a-f-]{36}$; next of the previous page
limitзапросintegerнет1–100; по умолчанию 50

Ответ 200

ПолеТипОбязателенПравила
itemsмассив objectдане больше 100 элементов
items[].idstring (uuid)да—
items[].kindstringдаодно из capture, verify, retention
items[].statestringдаодно из queued, running, committing, completed, failed, interrupted
items[].phasestringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
items[].startedAtstring (date-time)даНачало выполнения или время запроса, пока задание в очереди.
items[].finishedAtstring (date-time)даможет быть null
items[].errorCodestringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
items[].pointIdstring (uuid)даможет быть null
items[].progressobjectда—
items[].progress.bytesCopiedstringдацелое число десятичными цифрами, передаётся строкой; Обработанные байты: скопированные или уже находящиеся в хранилище копий.
items[].progress.bytesTotalstringдацелое число десятичными цифрами, передаётся строкой
items[].progress.blobsCopiedintegerдане меньше 0
items[].progress.blobsTotalintegerдане меньше 0
nextstringдапо шаблону ^[0-9]{1,17}_[0-9a-f-]{36}$; может быть null

Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507

Пример

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/jobs" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Перечислить точки восстановления ​

GET HEAD /api/v1/backup/points

Доступ: Системное право backup.read · Повтор: Можно повторять (чтение)

Перечисляет завершённые точки восстановления текущего хранилища копий от новых снимков к старым, каждую со временем снимка T, размером, байтами, добавленными в хранилище, признаком закрепления pinned и последней проверкой (verifiedAt, verifyDepth — structural или deep, verifyError). Страницы содержат limit точек (1–100, по умолчанию 50); продолжайте с after, равным next. Для заменённого хранилища показываются только его собственные точки.

Параметры

ИмяГдеТипОбязателенПравила
afterзапросstringнетпо шаблону ^[0-9]{1,17}_[0-9a-f-]{36}$; next of the previous page
limitзапросintegerнет1–100; по умолчанию 50

Ответ 200

ПолеТипОбязателенПравила
itemsмассив objectдане больше 100 элементов
items[].idstring (uuid)да—
items[].snapshotAtstring (date-time)даВремя снимка T; возраст точки отсчитывается от T.
items[].completedAtstring (date-time)да—
items[].blobsintegerдане меньше 0
items[].contentBytesstringдацелое число десятичными цифрами, передаётся строкой
items[].newBytesstringдацелое число десятичными цифрами, передаётся строкой; Байты, которые эта точка добавила в хранилище копий.
items[].tablesintegerдане меньше 0
items[].rowsintegerдане меньше 0
items[].pinnedbooleanда—
items[].verifiedAtstring (date-time)даможет быть null
items[].verifyDepthstringдаодно из structural, deep, null; может быть null
items[].verifyErrorstringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null
nextstringдапо шаблону ^[0-9]{1,17}_[0-9a-f-]{36}$; может быть null

Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507

Пример

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/points" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Запросить глубокую проверку точки восстановления ​

POST /api/v1/backup/points/{id}/verify

Доступ: Системное право backup.manage · Повтор: Можно повторять с тем же Idempotency-Key

Ставит в очередь проверку точки id, которая читает каждый её сохранённый байт; ответ — 202 с заданием, а результат появляется в verifiedAt, verifyDepth и verifyError точки. Idempotency-Key обязателен, а его повторное использование для другой точки — 409 idempotency_mismatch. Неизвестная точка — 404.

Параметры

ИмяГдеТипОбязателенПравила
idпутьstring (uuid)да—
Idempotency-Keyзаголовокstringдапо шаблону ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

Ответ 202

ПолеТипОбязателенПравила
idstring (uuid)да—
kindstringдаодно из capture, verify, retention
statestringдаодно из queued, running, committing, completed, failed, interrupted

Ответы: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

Пример

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/points/$ID/verify" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Закрепить или открепить точку восстановления ​

PUT /api/v1/backup/points/{id}/pin

Доступ: Системное право backup.manage · Повтор: Можно повторять: тот же запрос даёт тот же результат

Задаёт pinned точки id; закреплённая точка сохраняется правилами хранения сверх политики, пока её не открепят. Повторная установка того же значения ничего не меняет, а в ответе — обновлённая точка. Неизвестная или уже забытая точка — 404.

Параметры

ИмяГдеТипОбязателенПравила
idпутьstring (uuid)да—

Тело запроса (application/json)

ПолеТипОбязателенПравила
pinnedbooleanда—

Ответ 200

ПолеТипОбязателенПравила
idstring (uuid)да—
snapshotAtstring (date-time)даВремя снимка T; возраст точки отсчитывается от T.
completedAtstring (date-time)да—
blobsintegerдане меньше 0
contentBytesstringдацелое число десятичными цифрами, передаётся строкой
newBytesstringдацелое число десятичными цифрами, передаётся строкой; Байты, которые эта точка добавила в хранилище копий.
tablesintegerдане меньше 0
rowsintegerдане меньше 0
pinnedbooleanда—
verifiedAtstring (date-time)даможет быть null
verifyDepthstringдаодно из structural, deep, null; может быть null
verifyErrorstringдапо шаблону ^[a-z][a-z0-9_]{0,63}$; может быть null

Ответы: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Пример

bash
curl -X PUT "$ARKVORY_URL/api/v1/backup/points/$ID/pin" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pinned":false}'

Просмотреть, что сохранят правила хранения копий ​

GET HEAD /api/v1/backup/retention/preview

Доступ: Системное право backup.read · Повтор: Можно повторять (чтение)

Показывает, какие точки политика хранения сохранила бы, каждую с причинами (daily, weekly, monthly, pinned, newest), и какие удалила бы сейчас. Точки, не прошедшие проверку, не учитываются. Просмотр носит справочный характер: requestBackupRetention при запуске решает заново по состоянию хранилища.

Ответ 200

ПолеТипОбязателенПравила
keepмассив objectда—
keep[].idstring (uuid)да—
keep[].reasonsмассив stringдакаждый элемент: одно из daily, weekly, monthly, pinned, newest
deleteмассив objectда—
delete[].idstring (uuid)да—

Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507

Пример

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/retention/preview" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Запросить применение правил хранения копий ​

POST /api/v1/backup/retention/apply

Доступ: Системное право backup.manage · Повтор: Можно повторять с тем же Idempotency-Key

Ставит в очередь задание хранения: агент забывает точки вне политики, а затем удаляет содержимое, которое не использует ни одна оставшаяся точка, поэтому место возвращается в хранилище только после завершения задания. Возвращает 202 с заданием; Idempotency-Key обязателен, и его повтор возвращает то же задание. Сначала посмотрите previewBackupRetention.

Параметры

ИмяГдеТипОбязателенПравила
Idempotency-Keyзаголовокstringдапо шаблону ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

Ответ 202

ПолеТипОбязателенПравила
idstring (uuid)да—
kindstringдаодно из capture, verify, retention
statestringдаодно из queued, running, committing, completed, failed, interrupted

Ответы: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

Пример

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/retention/apply" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Arkvory · ProAnimaStudio