Пакеты
Пакеты UPack: регистрация, список, версии и скачивание по имени, версии или диапазону.
Операции этой группы с правилом доступа, правилом повтора, параметрами и ответами. Каждый запрос несёт ключ: Authorization: Bearer <ключ> (см. «Аутентификация»).
Операции
Перечислить версии пакетов
GET HEAD /api/v1/repositories/{repository}/packages
Доступ: Право в репозитории: package.read; файловые ключи: read · Повтор: Можно повторять (чтение)
Перечисляет зарегистрированные версии UPack с их манифестами, отфильтрованные по group и name (точное совпадение без учёта регистра; group= с пустым значением выбирает корневую группу, без параметра выбираются все группы). Результат задают sort (group, name, version), direction (asc, desc) и groupBy (none, group, package; при группировке добавляется groups со списком artifactIds страницы). Страницы содержат limit элементов (1–100, по умолчанию 50); продолжайте с after, равным next, и теми же фильтрами. Страницы не образуют снимок: версии, зарегистрированные в промежутке, могут быть пропущены до следующего прохода.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
group | запрос | string | нет | — |
name | запрос | string | нет | — |
sort | запрос | string | нет | одно из group, name, version |
direction | запрос | string | нет | одно из asc, desc |
groupBy | запрос | string | нет | одно из none, group, package |
after | запрос | string | нет | — |
limit | запрос | integer | нет | 1–100 |
Ответ 200
| Поле | Тип | Обязателен | Правила |
|---|---|---|---|
items | массив object | да | — |
items[].group | string | нет | — |
items[].name | string | нет | — |
items[].version | string | нет | — |
items[].artifactId | string (uuid) | нет | — |
items[].manifest | object | нет | — |
next | string | да | может быть null |
groups | массив object | да | — |
groups[].group | string | да | — |
groups[].name | string | да | может быть null |
groups[].artifactIds | массив string (uuid) | да | — |
Ответы: 200, 400, 401, 403, 404, 409, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/packages" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Скачать пакет по имени и версии
GET HEAD /api/v1/repositories/{repository}/packages/content
Доступ: Право в репозитории: content.read; файловые ключи: read · Повтор: Можно повторять (чтение)
Сопоставляет name (в группе group, по умолчанию корневой) с одной зарегистрированной версией и передаёт её потоком, как downloadArtifact; выбор называют заголовки X-Arkvory-Artifact-Id и X-Arkvory-Package-Version. Версию можно выбрать по точной version или диапазону SemVer range (например, ^1.4 или >=1.0.0 <2.0.0), при необходимости только среди версий со стадией stage; без них берётся наибольшая стабильная версия, prerelease=true допускает предварительные версии, а order=promoted берёт версию, которой стадия stage была присвоена последней. Имя сопоставляется с версией при каждом запросе, поэтому для возобновления используйте If-Range с возвращённым ETag или скачивайте по ID артефакта; resolvePackage даёт тот же выбор без байтов.
Параметры
| Имя | Где | Тип | Обязателен | Правила |
|---|---|---|---|---|
repository | путь | string | да | по шаблону ^[a-z0-9][a-z0-9_-]{0,63}$ |
Range | заголовок | string | нет | Single bytes range; multi-range is unsupported. HEAD ignores Range. |
If-Range | заголовок | string | нет | Exact strong ETag; a mismatch causes a full response. |
If-None-Match | заголовок | string | нет | Matching ETag returns 304, including HEAD. |
Arkvory-Download-Id | заголовок | string | нет | по шаблону ^[A-Za-z0-9_-]{16,64}$; The client own id of one download, the same on every range of it: the queue keys the session by it instead of the client address, answers a waiting request at once with 503 download_queued, and may ask it to yield its place at a range boundary. Without it, a waiting request is held until its turn for a bounded time. |
Arkvory-Queue-Ticket | заголовок | string | нет | не длиннее 80 символов; The last Arkvory-Queue-Ticket the server sent for this download: after a server restart the download takes its old turn. A ticket that is wrong, expired or of another download is ignored. |
Arkvory-Download-Class | заголовок | string | нет | одно из interactive, release, bulk, background; Queue class of the download. Only a class lower than the caller own one applies (people: interactive, services and links: release); an unknown value is 400. The response names the class applied. |
group | запрос | string | нет | не длиннее 128 символов |
name | запрос | string | да | 1–128 символов |
version | запрос | string | нет | не длиннее 128 символов; Exact version; excludes range. |
range | запрос | string | нет | не длиннее 256 символов; SemVer range: 1.2.3, ^1.2, ~1.2.3, 1.x, >=1.0.0 <2.0.0, a || b. |
stage | запрос | string | нет | по шаблону ^[a-z0-9][a-z0-9_.-]{0,31}$; Only versions promoted to this stage. |
prerelease | запрос | string | нет | одно из true, false; Include prereleases. |
order | запрос | string | нет | одно из version, promoted; promoted picks the most recently staged version and requires stage. |
Ответы: 200, 206, 304, 400, 401, 403, 404, 409, 416, 422, 503, 507
Пример
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/packages/content?name=$NAME" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-o file